javascript - 动态创建或设置隐藏输入的 jQuery 函数

标签 javascript jquery html

我正在尝试创建一个动态更新隐藏输入的函数。

以下是我的功能:

function updateDeletedFileIds(deletedFileId) {
    if($('input[name=multiFieldDeletedIds]') == null) {
        $('.selected_file_info').append('<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="'+deletedFileId+'" />');
    }
    else{
        id = $('input[name=multiFieldDeletedIds]').val();
        id += ','+deletedFileId
        $('input[name=multiFieldDeletedIds]').attr('value', id);

    }
}

这是我的预期输出:当第一次调用 updateDeletedFileIds 函数时,它应该创建一个隐藏的输入标记并根据 deletedFileId 设置值

updateDeletedFileIds(1) =>
'<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="1" />'

当第二次调用时,它应该只更新以逗号分隔的值

updateDeletedFileIds(2) =>
'<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="1,2" />'

updateDeletedFileIds(3) =>
'<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="1,2,3" />'

但是我的功能没有按预期工作。有人可以帮我吗?

最佳答案

要检查 jQuery 选择器是否返回任何内容,您应该检查其 length 属性。我还建议使用 val() 而不是 attr() 来设置值,因为 attr() 仅影响 html 属性,而val() 设置其 DOM 属性。

function updateDeletedFileIds(deletedFileId) {
    var $el = $('input[name=multiFieldDeletedIds]');
    if(!$el.length) {
        $('.selected_file_info').append('<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="'+deletedFileId+'" />');
    }
    else if ($el.val().indexOf(deletedFileId) < 0) {
        $el.val($el.val() + ',' + deletedFileId);
    }
}

关于javascript - 动态创建或设置隐藏输入的 jQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29981365/

相关文章:

javascript - 为什么这个正则表达式在映射到哈希时不起作用?

javascript - 需要另一个 JavaScript 文件中的 Javascript 文件

javascript - 超时获取下一个数组元素

javascript - 如何为 php 语法指定样式

html - SCSS - 嵌套的 css 类导致不同的大小(宽度和高度)

html - 媒体查询 - 通用响应模板

javascript - jquerymobile 确认似乎不会影响结果?

javascript - SAPUI5:如何将点击事件绑定(bind)到水平布局?

Sharepoint 2010 JQuery Ajax 不工作

jquery - 如何在密码字段中放置文本水印?