Jquery - 需要使用选定的单词验证文本字段

时间:2011-08-04 07:39:06

标签: javascript jquery jquery-selectors

我需要验证使用以下值"PO BOX", POBOX, "GPO BOX""GPOX"

归档的输入文本

如果有人在文本框中输入这些字词,请提醒他们“我们不会将产品发送到邮政信箱地址”。 并删除整个文本。

我在下面构建,

  

$( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。模糊(函数(){

     

$( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('PO   BOX'),
    $( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('POBOX'),         $( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('GPO   BOX'),

     

$( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('GPOX'),

     

$( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('po   框'),

     

$( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('pobox'),

     

$( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('gpo   框'),

     

$( '#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。VAL()   == $('#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 个答案:

答案 0 :(得分:1)

尝试使用正则表达式。我不是正则表达式大师,但你只需要在你的字符串中找到“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();
}

答案 1 :(得分:1)

您的问题是您将匹配结果与原始值进行比较。 如果你改变你的行: $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()== $('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('GPO BOX'),

到:

$('#objCheckoutRegistration_PhysicalAddress_txtAddressLine1')。val()。match('GPO BOX'),

它会正常工作。 在offcourse你可以使用正则表达式匹配分组进行oneliner验证,但是当前可以正常工作

( - :Y。

答案 2 :(得分:0)

尝试编写正则表达式。这将适用于你的情况.....

var str="GPO 123";

var patt=/PO/g;

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

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

答案 3 :(得分:0)

您可以使用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();
    }
}