嗨,我尝试对动态文本框进行一些验证。基于类。 如果两个文本值都相同,我的表单不应该提交。我已经写了一个条件。但它总是显示相同的值; 这是我的代码
$('.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;
}
});
答案 0 :(得分:0)
我认为$(this).val()==$(this).val()
会给你总是相同的价值,因此它永远都是真的。将之前的值存储在另一个容器中。
答案 1 :(得分:0)
这里它将始终显示与您自己比较相同元素的相同值。 $(this)将引用当前元素。
答案 2 :(得分:0)
代码:
if($(this).val()==$(this).val())
永远都是真的。而是尝试检查他们的兄弟姐妹的价值观。以这种方式更改您的代码:
if($(this).val()==$(this).siblings().val())
答案 3 :(得分:0)
创建一个隐藏元素(比如说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');
}
答案 4 :(得分:0)
使用nth-child
定位同一类的不同元素。
$('.option_text:nth-child(1)') == $('.option_text:nth-child(2)');
与其他人一样,$(this).val()==$(this).val()
永远都是真的。