我需要验证使用以下值"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和其他一些文本,它就不会验证。
答案 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();
}
}