如何停止使用jQuery获取文本字段的重复值?
代码如何停止使用jQuery获取文本字段的重复值?,jquery,html,forms,validation,Jquery,Html,Forms,Validation,代码 $(文档).ready(函数(){ $(“#添加#变体”)。单击(函数(){ var tag_val=$(“#物料_输入”).val(); //检查是否已添加标签 $(“#添加_区域_结果”)。每个(函数(){ if($(this).text()==标记值){ 警报(“再次出现相同值”); 返回false; }否则{ //插入标签 $(“#添加#区域#结果”)。添加(“”+标记#val+”)。附加到(“#添加#区域#结果”); } }); }); }); 使用下面的代码。也许对你有
$(文档).ready(函数(){
$(“#添加#变体”)。单击(函数(){
var tag_val=$(“#物料_输入”).val();
//检查是否已添加标签
$(“#添加_区域_结果”)。每个(函数(){
if($(this).text()==标记值){
警报(“再次出现相同值”);
返回false;
}否则{
//插入标签
$(“#添加#区域#结果”)。添加(“”+标记#val+” )。附加到(“#添加#区域#结果”);
}
});
});
});
使用下面的代码。也许对你有帮助
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#add_variation").click(function(){
var tag_val = $("#materials_input").val();
// check if tag already added
$("#adding_area_result").each(function() {
if($(this).text() == tag_val){
alert("same value again");
return false;
}else{
// insert tags
$("#adding_area_result").add('<li><span rel="variation_area" class="variation1_tag">'+tag_val+'</span><input type="hidden" name="variation1[]" id="variation1" value="'+tag_val+'" /></li>').appendTo("#adding_area_result");
}
});
});
});
</script>
</head>
<body>
<br>
<input type="text" maxlength="2048" class="text" name="materials_input" id="materials_input" />
<br>
<br>
<input type="button" value="Add" class="button-medium" id="add_variation" />
<div id="adding_area_result">
</div>
</body>
</html>
$(文档).ready(函数(){
$(“#添加#变体”)。单击(函数(){
var tag_val=$(“#物料_输入”).val();
//检查是否已添加标签
var检查值=“”;
$(“.adding_area_result li span”)。每个(函数(){
if($(this).text()==标记值){
警报(“再次出现相同值”);
检查_val='1';
}
});
如果(检查值=“”)
{
$(“.adding_area_result”).append(“”+tag_val+” );
}
$(“#物料#输入”).attr('值','';
返回true;
});
});
除了评论者指出的其他问题外,您还将html添加到#添加_区域_结果
两次。add
方法和appendTo
方法都会向所选元素添加html,因此您只需要一个。您可以像这样使用append
方法:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#add_variation").click(function(){
var tag_val = $("#materials_input").val();
// check if tag already added
var check_val ='';
$(".adding_area_result li span").each(function() {
if($(this).text() == tag_val){
alert("same value again");
check_val = '1';
}
});
if(check_val == '')
{
$(".adding_area_result").append('<li><span rel="variation_area" class="variation1_tag">'+tag_val+'</span><input type="hidden" name="variation1[]" id="variation1" value="'+tag_val+'" /></li>');
}
$("#materials_input").attr('value','');
return true;
});
});
</script>
</head>
<body>
<br>
<input type="text" maxlength="2048" class="text" name="materials_input" id="materials_input" value=""/>
<br>
<br>
<input type="button" value="Add" class="button-medium" id="add_variation" />
<ul class="adding_area_result">
</ul>
</body>
</html>
$(“#添加_区域_结果”)。追加(“”+标记_val+” ”)
发生这种情况的原因是,当您调用.text()时,它返回的文本周围有空白,这是由周围的HTML造成的,导致匹配失败。您可以向内部span标记添加一个类,然后使用该类来获取文本以进行比较
下面是一个JSFIDLE演示:
具体变化是:
$("#adding_area_result").append('<li><span rel="variation_area" class="variation1_tag">'+tag_val+'</span><input type="hidden" name="variation1[]" id="variation1" value="'+tag_val+'" /></li>')
然后将“tag”类添加到注入的HTML中。修改代码,使用当前元素的数量为隐藏元素插入新id。这是一个非常详细的示例,您可以将其重构为更简洁的示例
if($(this).find(".tag").text() == tag_val)
{
alert("same value again");
return false;
}
函数addNewElement(newIndex,tag_val,element){
元素。追加(“”+tag_val+” );
}
$(“#添加#变体”)。在('单击',函数(){
var tag_val=$(“#物料_输入”).val();
var组=$(“.adding_area_result”);
var newIndex=group.find('.variation1_标记').length?group.find('.variation1_标记').length+1:0;
var isDuplicate=假;
//添加一个新的
如果(新索引){
group.find('.variation1_标记')。each(函数(){
if($(this).text()==标记值){
isDuplicate=真;
}
});
}
如果(!isDuplicate){
addNewElement(新索引、标记值、组);
}
});
回答。。。。编辑:也许你应该写一些你尝试过的东西,而不是仅仅发布你的代码。请澄清“停止获取文本字段的重复值”以及你的意思,因为这可能意味着很多事情。在具有唯一ID的div上运行each()
循环有什么意义?为什么不直接执行$(“#添加_区域_结果”).val()
?我的代码的问题是,当我在文本字段中输入一些内容并两次单击“添加”按钮时,它会插入重复的值。那么,您的代码对于无效。添加
,因为您无法通过id=“variation1”添加重复的元素
因为这违反了HTML规范。@mun..您的代码只在第一次工作,如果我第二次输入该值,那么它将不会验证。您检查了代码吗?它不工作。现在请检查。。现在开始工作了。有一点我弄错了非常感谢你Kishan.你的代码正是我想要的。谢谢你..你很好...)你能给我完整的工作代码吗?我撤销了更改,应该可以正常工作。不,它不能正常工作,你检查了吗?我的错,我忘了检查每一个的重复项。参见修订后的代码。示例:-此处的版本稍好一些:
function addNewElement(newIndex, tag_val, element) {
element.append('<li><span rel="variation_area" class="variation1_tag">' + tag_val + '</span><input type="hidden" id="variation' + newIndex + '" value="' + tag_val + '" /></li>');
}
$("#add_variation").on('click', function () {
var tag_val = $("#materials_input").val();
var group = $(".adding_area_result");
var newIndex = group.find('.variation1_tag').length ? group.find('.variation1_tag').length + 1 : 0;
var isDuplicate = false;
// add a new one
if (newIndex) {
group.find('.variation1_tag').each(function () {
if ($(this).text() === tag_val) {
isDuplicate = true;
}
});
}
if (!isDuplicate) {
addNewElement(newIndex, tag_val, group);
}
});