2013-05-10 5 views
2

В настоящее время я просматриваю элементы формы и проверяю его, проверяя против, если у пользователя есть что-либо. Кроме того, мне нужно использовать другую проверку для определенного поля. В частности, мне нужно проверить, действительный ли телефон . Вот мой код. Я перебираю все элементы ввода, но нужно выбрать элемент с идентификатором номер телефона и посмотреть, действительно ли он действительный номер телефона. Это просто не влияет на условие, которое определяет, является ли атрибут номером телефона. Любая помощь приветствуется.jQuery цикл через элементы формы и выберите конкретный идентификатор

$("#phoneForm :input").each(function(){ 

    var placeholderText = $(this).attr("placeholder");       

    if($(this).val().length == 0){    
     alert(placeholderText.replace('*','') + ' field is required'); 
     $(this).focus(); 
     valid = false; 
     return false; 
    }  

    if($(this).attr("id['phoneNumber']")){ 
    alert(placeholderText + " check phone number"); 
    } 

}); 
+1

'идентификатор [«PHONENUMBER»] 'не является допустимым именем атрибута. –

ответ

5

Я думаю, что вам нужно изменить условный оператор выглядеть примерно так:

if($(this).attr("id") == 'phoneNumber'){ 
    alert(placeholderText + " check phone number"); 
} 

Селектор id[phoneNumber] просто не действует. Я думаю, вы смешиваете синтаксис с другим селектором ... Если вы хотите, чтобы соответствовать только тем элементам, которые имеют phoneNumber в их ID, вы бы использовать что-то вроде этого:

$("element[id='phoneNumber']") 

Хотя этот пример может быть немного странно так как существует определенный селектор, соответствующий идентификатору элемента. Но .. как мы все знаем - есть больше чем один способ кожи единорога :)


Once заключительное примечание: Вы использовали $(this).attr("id") для извлечения id данного элемента, когда на самом деле вы могли бы просто использовать родной JavaScript, чтобы извлечь эту собственность, как это:

this.id 

Так положить, что все вместе привело бы к чему-то вроде этого:

if(this.id == 'phoneNumber'){ 
    alert(placeholderText + " check phone number"); 
} 

этот безусловно, улучшит производительность кода, даже если вы на самом деле не чувствуете этого на данном этапе. Вы начнете замечать улучшения после того, как начнете работать с более сложными и интенсивными приложениями JS.
(Благодаря David Thomas для указывая, что ко мне и jfriend00 для убедить меня изменить мой ответ: P)

+5

Предпочтительно: 'this.id == 'phoneNumber''. –

+0

@ dav - почему? Вы говорите, что с некоторой точки зрения производительности или оптимизации? Если это так, я думаю, что это может быть немного переборщить ... В простых случаях (как я предполагаю, это один) действительно не будет *, что * большая разница ... – Lix

+4

'$ (this) .attr (" id ")' - это создание объекта и двух вызовов функций и ссылка на свойство vs. 'this.id', которая является одной ссылкой свойства. Очень ясно, что проще и быстрее. jQuery должен ТОЛЬКО использоваться, когда он быстрее закодировать или выполнить, чем не использовать его. Просто потому, что у вас есть jQuery, это не значит, что нужно забыть простейшие способы использования простого javascript. – jfriend00

Смежные вопросы