javascript - jQuery .insertAfter 仅使用类选择器一次

标签 javascript jquery html events jquery-selectors

我有以下代码,可以正常工作,在输入正确的值时在输入字段后插入成功范围。但我的问题是,每次我离开球场时,它都会增加跨度。来自问题Jquery insertAfter only once if element exist我知道我可以在创建时设置跨度的 ID,并在每次事件触发时检查长度以查看它是否已经存在。但我不确定在使用类选择字段时如何做到这一点。

任何有关类选择器的帮助都会有所帮助。

$(".systemFieldName").blur(function(){
          var val = $(this).val();
          var exists = $.inArray(val,allFields);  
    if (val!="" && exists>=0){
      $("<span class='label label-success'>Valid</span>").insertAfter(this).one();
    } 
});

最佳答案

这应该有帮助。

allFields=["121",'test'];
$(".systemFieldName").blur(function(){
          var val = $(this).val();
          var exists = $.inArray(val,allFields);
          //See if the next element is a span with class label.
          var nextEl=$(this).next(); //next element
          var add=true; //add by default 
          if(nextEl.hasClass('label-success')) add=false; //don't add.

    if (val!="" && exists>=0 && add){ //only insert if all conditions are true.

      $("<span class='label label-success'>Valid</span>").insertAfter(this).one();
    }else if((val == "" || exists < 0) && !add) { // The !add means there is already the Valid span, we can safely remove nextEl, if the value changes.

      nextEl.remove();
    } 
});

https://jsfiddle.net/ym66f48p/2/

这会检查以确保下一个元素是一个范围,它还包括一个删除函数,如果稍后更改值,它将删除有效范围,但仅当下一个元素已经是有效范围时。

使用 121 或 test 作为 jsFiddle 中的测试。

关于javascript - jQuery .insertAfter 仅使用类选择器一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36611524/

相关文章:

javascript - JQuery Packery 的中心容器?

javascript - 如何在另一个页面上创建一个div?

javascript - 在字符串中查找逗号,后跟空格,然后是数字

javascript - 我应该如何将 Svelte Reactivity 与 DOM getElementById 一起使用?

javascript - 从 Angular 指令获取输入字段的值

html - 如何对齐图像并将信息放在图像下方

html - 为什么此YouTube视频无法正确嵌入?

javascript - 为什么在表单上使用 send as 方法时我的所有链接都被禁用?

jQuery - 获取具有特定类名的输入值

jquery - 将 .field-validation-error 样式化为长错误消息的标注