Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery返回元素的初始值';s属性_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jQuery返回元素的初始值';s属性

Javascript jQuery返回元素的初始值';s属性,javascript,jquery,ajax,Javascript,Jquery,Ajax,情况描述 我的HTML表单加载的元素数量可变,这些元素的属性为valid=“default” 当用户为每个元素输入一个值时,我使用AJAX来验证标记,并相应地将valid设置为true或false 当按下提交按钮时,我收集有效的属性值 问题 jQuery只返回valid的初始值。是否有方法获取更新后的有效值 我正在使用的代码: var tags=($('.tag').map(函数(){return$(this.attr('valid')})).get() 返回[“default”,“defaul

情况描述

我的HTML表单加载的元素数量可变,这些元素的属性为
valid=“default”

当用户为每个元素输入一个值时,我使用AJAX来验证标记,并相应地将
valid
设置为true或false

当按下提交按钮时,我收集
有效的
属性值

问题

jQuery只返回
valid
的初始值。是否有方法获取更新后的
有效值

我正在使用的代码:

var tags=($('.tag').map(函数(){return$(this.attr('valid')})).get()

返回
[“default”,“default”]
,即使值已更新,也应显示
[“true”,“false”]

我不熟悉JavaScript、jQuery和AJAX。所以,如果有更好的方法,请告诉我你的想法

$('#' + field + 'cell')
选择
td
元素,
input
的父元素具有
valid
属性,而不是
input
元素本身,从而导致

.attr("valid", "false")
应用于父
td
元素,而不是子
input
元素

尝试删除
DOM
事件属性,将选择器更改为

        $('#' + field + 'cell')
        .attr("style", 'border:3px solid #FF0000')
        .find("[id="+field+"]").attr("valid", "false")


jsfiddle

您是否在success ajax函数中执行此操作?如果是异步的,您需要在ajax完成后获取标记,以显示您设置的有效性?显然,这不起作用,因为ajax和PHP,但是您可以看到代码。
$(function() {
  function validate(field, query) {
    $.ajax({
        type: "POST",
        url: "/echo/json/",
        data: {json:JSON.stringify(query)}          
    })
    .done(function(response) {
       console.log(field, response === "false", response === "true")

        //response = response.replace(/[[\]]/g,'');
        if(response === 'false') {
            $('#' + field + 'cell')
            .attr("style", 'border:3px solid #FF0000')
            .find("[id="+field+"]").attr("valid", "false")
        }
        else {
            $('#' + field + 'cell')
            .attr("style", 'border: none')
            .find("[id=" + field + "]")
            .attr("valid", "true")

        }
    })
    .fail(function() {
        $('#response').html('error');
    })
    .always(checkForm) // added to verify `checkForm` at each `$.ajax` call
  }

  function checkForm(variable) {
    var tags = $.map($(".tag"), function (el) { return $(el).attr('valid') });

    console.log(tags);
  }

  $("#submitButton").on("click", function(e) {
     checkForm()
  });

  $("[id^=tag]").on("blur", function(e) {
      validate(e.target.id, e.target.value)
  });
});