Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 评估未聚焦的元素_Javascript_Jquery - Fatal编程技术网

Javascript 评估未聚焦的元素

Javascript 评估未聚焦的元素,javascript,jquery,Javascript,Jquery,我需要评估隐藏输入字段的内容,根据无序列表的内容,谁的值会发生变化。作为参考,此输入字段是单个输入字段2组件的一部分 评估这类字段的问题在于onchange似乎不会激发输入元素,因为该元素不在焦点中。这意味着我有两个可能的方向: 弄清楚如何在元素不在焦点时触发onchange事件; 评估无序列表的内容。 这些选项中的后一个似乎是最合适的,但是它也可能很重并且可能不准确。我应该选择哪种方法 HTML: 此插件具有针对这种情况的事件回调 $("#likesTags").tagit({ //T

我需要评估隐藏输入字段的内容,根据无序列表的内容,谁的值会发生变化。作为参考,此输入字段是单个输入字段2组件的一部分

评估这类字段的问题在于onchange似乎不会激发输入元素,因为该元素不在焦点中。这意味着我有两个可能的方向:

弄清楚如何在元素不在焦点时触发onchange事件; 评估无序列表的内容。 这些选项中的后一个似乎是最合适的,但是它也可能很重并且可能不准确。我应该选择哪种方法

HTML:
此插件具有针对这种情况的事件回调

$("#likesTags").tagit({
    //This should be appended to your current tagit initializing call.
    afterTagAdded: function() {
        onTagsUpdated('#likesTags');
    },
    afterTagRemoved: function() {
        onTagsUpdated('#likesTags');
    }
});

function onTagsUpdated(id){
    var tags = $(id).tagit("assignedTags"); //Returns an array of the text values of all the tags currently in the widget.
    console.log('tags of',id,'updated:',tags);
}

您如何更改likesTags内容?我在您的代码中找不到它。@Bsalex likesTags被标记it包中的某个javascript更改。我包括了一个链接到上面的项目,到包含示例的页面。哪一个是您的案例?我的验证在一个单独的javascript文件中。由于这将在标记中,是否有方法提供validation.js句柄以在触发事件时捕获?或者,我应该将$likesTags.tagit移动到validation.js中,而不是尝试在js文件之间播放吗?您可以将onTagsUpdated函数移动到validation.js中。但是,我认为如果在validation.js中声明一个由onTagsUpdated调用的函数,可能会更干净。我将整个实例化例程移动到validation.js中,在HTML中重新排序脚本调用后,它可以正常工作。非常感谢
<input id="likesTags" name="tags" class="tagit-hidden-field">
<ul class="tagit ui-widget ui-widget-content ui-corner-all">
  <li class="tagit-new">
    <input class="ui-widget-content ui-autocomplete-input" autocomplete="off" type="text">
    <span role="status" aria-live="polite" class="ui-helper-hidden-accessible">1 result is available, use up and down arrow keys to navigate.</span>
  </li>
</ul>
$("#likesTags").onchange(function () {
    var text = $("#likesTags").val();
    if (text.length > 2)
    {
        pageCompletionSequence += "1";
        checkCompletion("#onb5", "#Dislikes", "11");
    }
    else 
    {
        pageCompletionSequence = "1";
        elementRestore("#onb5");
    }
})

function checkCompletion(id, np, seq) {
    if (pageCompletionSequence == seq) {
        $(id).removeClass("hiddenLink");
        $(id).parent().attr("href", np);
        pageCompletionSequence = "1";
    }
}

function elementRestore(id) {
    $(id).addClass("hiddenLink");
    $(id).parent().removeAttr("href");
}
$("#likesTags").tagit({
    //This should be appended to your current tagit initializing call.
    afterTagAdded: function() {
        onTagsUpdated('#likesTags');
    },
    afterTagRemoved: function() {
        onTagsUpdated('#likesTags');
    }
});

function onTagsUpdated(id){
    var tags = $(id).tagit("assignedTags"); //Returns an array of the text values of all the tags currently in the widget.
    console.log('tags of',id,'updated:',tags);
}