Привет, я пытаюсь выполнить некоторую проверку для динамического текстового поля на основе класса. если оба текстовых значения одинаковы, моя форма не должна быть отправлена. Я уже написал одно условие. но оно всегда показывает одно и то же значение; это мой код
$('.option_text').each(function(){
if($(this).val() ==''){
alert('Option Cannot Empty');
$('.add_option_table').show();
$('.add_questions').hide();
$(this).focus();
submitAllow=false;
return false;
}else if($(this).val()==$(this).val()){
alert('Option Value Shoud not Same');
$('.add_option_table').show();
$('.add_questions').hide();
$(this).focus();
submitAllow=false;
return false;
}
});
Используйте nth-child
для ориентации на разные элементы одного и того же класса.
$('.option_text:nth-child(1)') == $('.option_text:nth-child(2)');
Как и другие, указанные $(this).val()==$(this).val()
всегда будут true.
Здесь он всегда будет показывать то же значение, что и сравнение с самим собой. $ (this) будет ссылаться на текущий элемент.
Код:
if($(this).val()==$(this).val())
Всегда будет правдой. Вместо этого попробуйте проверить значения своих братьев и сестер. Измените свой код таким образом:
if($(this).val()==$(this).siblings().val())
Я думаю, что $(this).val()==$(this).val()
даст вам всегда одно и то же значение, поэтому оно всегда будет истинным. Храните предыдущее значение в другом контейнере.
Создайте скрытый элемент (пусть скажем id = "HiddenVal"), где вы можете сохранить все введенные значения текстового поля до сих пор. Это можно сделать, вызвав следующую функцию
function getPrevValues(){
var AllValues=[];
$('.option_text').each(function(){
AllValues.push($(this).val());
});
$('#HiddenVal').val(AllValues);
}
Теперь, когда вы вводите новое значение, вызовите функцию, например checkAvailability (this)
function checkAvailability(id){
var AllValues=$('#HiddenVal').val().split(',');
if($.inArray($(id).val(),AllValues)>-1)
alert('You can add')
else
alert('you cant add');
}
$(this).val()==$(this).val()
всегда будет верным