Регулярное выражение внутри строки javascript

#javascript #html #regex #string

#javascript #HTML #регулярное выражение #строка

Вопрос:

У меня есть форма, которая должна быть реализована с помощью javascript:

 var birthdayForm = '<form id="birthday_signup" class="klaviyo_gdpr_embed_Wh3QTB" style="margin-top: 40px;" action="//manage.kmail-lists.com/subscriptions/subscribe" data-ajax-submit="//manage.kmail-lists.com/ajax/subscriptions/subscribe" method="GET" target="_blank" novalidate="novalidate">' 
'<input type="hidden" name="g" value="Wh3QTB">' 
'<input type="hidden" name="$fields" value="Birthday">' 
'<input type="hidden" type="text" name="Birthday" id="final_birthday">' 
'<div class="klaviyo_field_group">' 
'<h2>Vertel ons jouw verjaardag en we zorgen voor een leuke verrassing!</h2>' 
'<input class="" style="display:none;" type="email" value="" name="email" id="k_id_email" placeholder="Your email" />' 
'<div class="klaviyo_field_group klaviyo_form_actions">' 
'<div class="klaviyo_field_group" style="margin: 10px 0;">' 
'<input id="klaviyo_form_Birthday" oninput="this.value = this.value.replace(/[^0-9/.]/g, '').replace(/(..*)./g, '$1');" placeholder="dd/mm/yyyy" maxlength="10" type="text" />' 
'<button type="submit" class="klaviyo_submit_button btn" style="margin-left: 15px;">Versturen</button>' 
'</div>' 
'</div>' 
'</div>' 
'<div class="klaviyo_messages">' 
'<div class="success_message" style="display:none;">' 
'<p class="thank_you">Bedankt om jouw verjaardag te delen!</p>' 
'</div>' 
'<div class="error_message" style="display:none;"></div>' 
'</div>' 
'<div class="klaviyo_form_actions" style="margin: 10px 0;">' 
'' 
'</div>' 
'</form>';
 

Как вы можете видеть, следующее регулярное выражение выполняется при «oninput»:

 oninput="this.value = this.value.replace(/[^0-9/.]/g, '').replace(/(..*)./g, '$1');"
 

К сожалению, это прерывается. Вероятно, оно неправильно экранируется. Я не понимаю, как именно. Кто-нибудь может мне помочь?

Комментарии:

1. можете ли вы привести пример ввода, с которым вы хотите заставить регулярное выражение работать, и почему вы хотите внести изменения во ввод

2. Обновленный ответ: jsfiddle.net/3xyw5g6z . Изменение oninput связано с тем, что я хочу помочь клиентам вводить свой день рождения в правильном формате. По разным причинам мы не можем использовать type=data, поэтому вместо этого я выбрал type=text .

Ответ №1:

Почему бы не использовать type=date ? Это позволило бы достичь ваших целей гораздо более простым способом.

Пожалуйста, проверьте мои изменения здесь: https://jsfiddle.net/v8cwuq69/3 /

У меня есть:

  1. изменен тип ввода на date
  2. убрал oninput функцию, я думаю, в этом больше нет необходимости
  3. добавлено required логическое свойство к input элементу, причина: документ
  4. Я удалил ваш novalidate в вашем form узле, хотя и не уверен, зачем вы это добавили

P.S. Я настоятельно рекомендую писать HTML-код не на JavaScript, а на HTML. Его гораздо проще поддерживать, форматировать и отлаживать.

Комментарии:

1. Спасибо за помощь, но я обязан использовать тип ввода текст вместо даты. Итак, остается главный вопрос: как я могу убедиться, что регулярное выражение выводится правильно внутри строки javascript. Я знаю, что лучше не писать html-код внутри Javascript, но Shopify Checkout допускает только javascript.