Jquery - необходимо проверить текстовое поле с выбранными словами - PullRequest
0 голосов
/ 04 августа 2011

Мне нужно проверить введенный текст, указанный ниже, "PO BOX", POBOX, "GPO BOX" и "GPOX"

если кто-то введет эти слова в текстовое поле, предупредите их: «Мы не отправляем продукты на адреса почтовых ящиков». и удалите весь текст.

У меня есть билд ниже,

$ (функция ( '# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). Размывание () {

$ ( '# objCheckoutRegistration_PhysicalAddress_txtAddressLine1') знач. () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('PO BOX '),
$ ( '# ObjCheckoutRegistration_PhysicalAddress_txtAddressLine1'). Вал () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('POBOX'), $ ( '# ObjCheckoutRegistration_PhysicalAddress_txtAddressLine1'). Вал () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('GPO BOX '),

$ ( '# objCheckoutRegistration_PhysicalAddress_txtAddressLine1') знач. () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('GPOX'),

$ ( '# objCheckoutRegistration_PhysicalAddress_txtAddressLine1') знач. () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('po коробка '),

$ ( '# objCheckoutRegistration_PhysicalAddress_txtAddressLine1') знач. () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('pobox'),

$ ( '# objCheckoutRegistration_PhysicalAddress_txtAddressLine1') знач. () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('gpo коробка '),

$ ( '# objCheckoutRegistration_PhysicalAddress_txtAddressLine1') знач. () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val (). match ('gpox') {

          alert('We do not ship products to PO Box addresses');
          $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1').val('');
          $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1').focus();
      }

  });     });

но проблема в том, что оно проверяет только точное слово,

Я имею в виду, если добавить PO BOX 1145 и какой-либо другой текст, он не будет проверен.

Ответы [ 4 ]

1 голос
/ 04 августа 2011

Ваша проблема в том, что вы сравниваете результат совпадения с исходным значением. если вы измените свои строки с: $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). val () == $ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'.

до:

$ ('# objCheckoutRegistration_PhysicalAddress_txtAddressLine1'). Val (). Match ('BOX GPO'),

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

(-: Y.

1 голос
/ 04 августа 2011

Попробуйте использовать регулярное выражение. Я не гуру регулярных выражений, но вам просто нужно найти текст, в котором в строке есть «PO» и «BOX».

Итак, это должно сработать

var regex = new RegExp("PO");
var match = regex.exec($('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1').val());
if (match != null)
{
    alert('We do not ship products to PO Box addresses');
    $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1').val('');
    $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1').focus();
}
0 голосов
/ 04 августа 2011

Проверить наличие содержимого можно с помощью функции String.indexOf (...).

var input = $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1');
var inputValue = input.val().toUpperCase();

var poBoxIdentifiers = ['PO BOX', 'POBOX', 'GPOX'];

for(var i = 0; i < poBoxIdentifiers.length; i++) {
    if (inputValue.indexOf(poBoxIdentifiers[i]) !== -1) {
        alert('We don\'t ship to...');
        input.val('').focus();
    }
}
0 голосов
/ 04 августа 2011

Попробуйте написать регулярное выражение.это будет работать в вашем случае .....

var str="GPO 123";

var patt=/PO/g;

var result=patt.test(str);//returns true or false

document.write("Returned value: " + result);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...