Javascript 用于动态创建或设置隐藏输入的jQuery函数

Javascript 用于动态创建或设置隐藏输入的jQuery函数,javascript,jquery,html,Javascript,Jquery,Html,我试图创建一个函数来动态更新隐藏的输入 以下是我的职责: function updateDeletedFileIds(deletedFileId) { if($('input[name=multiFieldDeletedIds]') == null) { $('.selected_file_info').append('<input type="hidden" class="MultiField" name="multiFieldDeletedIds" value

我试图创建一个函数来动态更新隐藏的输入

以下是我的职责:

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(2) =>
'<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="1,2" />'

updateDeletedFileIds(3) =>
'<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="1,2,3" />'
updateDeletedFileId(2)=>
''
UpdateDeletedFileId(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);
    }
}
函数updateDeletedFileId(deletedFileId){
var$el=$('input[name=multifieddeletedids]');
如果(!$el.长度){
$('.selected_file_info')。追加('');
}
else if($el.val().indexOf(deletedFileId)<0){
$el.val($el.val()+,'+deletedFileId);
}
}
您可以尝试以下方法:

    function updateDeletedFileIds(deletedFileId) {
        var $el = $('.selected_file_info');
        if($el.find("input.MultiField").length==0) {
            $('.selected_file_info').append('<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="'+deletedFileId+'" />');
        }
        else{
          if( $el.find("input.MultiField").val().indexOf(deletedFileId)<0) { 
            $el.find("input.MultiField").val($el.find("input.MultiField").val() + ','+deletedFileId);
        }
      }
    }
函数updateDeletedFileId(deletedFileId){
变量$el=$('.selected_file_info');
if($el.find(“input.MultiField”).length==0){
$('.selected_file_info')。追加('');
}
否则{

if($el.find(“input.MultiField”).val().indexOf(deletedFileId)你能显示你的HTML代码吗?你遇到了什么错误?或者发生了什么你没有预料到的事情?不起作用…..删除
+=
,只在
中写
+
,否则
@JoshBjelovuk谢谢你的回答我很感激。我如何确保重复的ID不会添加到隐藏字段中。我的意思是如果
updateDeletedFileID(1)
第二次不应该更新隐藏字段感谢您的回答。我如何确保重复的ID不会添加到隐藏字段。我的意思是,如果
第二次更新删除的ID(1)
,它不应该更新隐藏字段
    function updateDeletedFileIds(deletedFileId) {
        var $el = $('.selected_file_info');
        if($el.find("input.MultiField").length==0) {
            $('.selected_file_info').append('<input type="hidden"  class="MultiField" name="multiFieldDeletedIds" value="'+deletedFileId+'" />');
        }
        else{
          if( $el.find("input.MultiField").val().indexOf(deletedFileId)<0) { 
            $el.find("input.MultiField").val($el.find("input.MultiField").val() + ','+deletedFileId);
        }
      }
    }