2016-10-04 89 views
0

我正在比较javascript/jQuery的两个值。一个值是数据属性,另一个值是用户输入的内容。我希望脚本在数据属性中找到与单词不匹配的用户值中的单词。我可以添加类到整个.text元素,但我不知道如何将类添加到单词......我应该分割这些值吗?比较值并将错误类添加到不匹配的词

这里是我的HTML代码

<div id="compare-text"> 
    <div class="row"><span>1.</span><p class="text" data-for="Some sample text" spellcheck="false" contenteditable="true"></p></div> 
    <div class="row"><span>2.</span><p class="text" data-for="Some sample text" spellcheck="false" contenteditable="true"></p></div> 
    <div class="row"><span>3.</span><p class="text" data-for="Some sample text" spellcheck="false" contenteditable="true"></p></div> 
</div> 

这里是我的脚本

$('#check').click(function() { 
var controlNumber = 1; 
$('.text').each(function() { 
    var value = $(this).attr('data-for'), 
    userValue = $(this).text(); 
    value = value.toLowerCase(); 
    userValue = userValue.toLowerCase(); 
    if (userValue === '') { 
    $(this).addClass('error'); 
    $(this).removeClass('success'); 
    controlNumber = 0; 
    } else if (value !== userValue && userValue !== '') { 
    $(this).addClass('error'); 
    $(this).removeClass('success'); 
    controlNumber = 0; 
    } else if (value === userValue) { 
    $(this).addClass('success'); 
    $(this).removeClass('error'); 
    } else { 
    controlNumber = 1; 
    } 
}); 
if (controlNumber === 1) { 
    $('#success-message').addClass('visible'); 
} 

});

回答

0

如果你想检查输入数据的data-for属性值匹配,你可以这样做:

$(".test").keydown(function(){ 
    var data = $(this).attr('data-for').split(" "), 
     text = this.value.split(0); 
    $(this).addClass("success"); 
    $(this).removeClass("error"); 
    for (var i = text.length; i--;) for (var j = data.length; j--;) { 
     if (data[j] === text[i]) { 
      $(this).addClass("error"); 
      $(this).removeClass("success"); 
    } 
}) 

更改test要素输入,如:

<input/><textarea></textarea>

+0

我应该将此代码粘贴到#check点击功能中吗? – user3043693

+0

@ user3043693海事组织你不应该粘贴你不明白的代码......你对此有何疑问? –

相关问题