【问题标题】:Access checkbox through JavaScript and JQuery with their ID通过 JavaScript 和 JQuery 及其 ID 访问复选框
【发布时间】:2016-09-16 09:29:24
【问题描述】:

尽管我已经搜索了将近一周的事实,但我找不到一种方法来做我想做的事,所以我在这里。 这就是我想要做的:我有一个应该显示文件名的表单和每个名称的复选框,允许用户选择他想要选择的文件。每个复选框的值是与其相关的文件的路径,每个复选框的 ID 是其文件目录的路径加上一个数字。在我的 JavaScript 中,我尝试通过循环“构建”每个 ID,然后访问我的复选框,但我无法让它工作,我开始有点绝望;所以我希望你们能帮助我。 这是我的cshtml代码:

<div class="modal-dialog modal-lg ">
<div class="modal-content">
    @{
        string dir = ""+Path.GetDirectoryName(Model);
        var listFiles = System.IO.Directory.GetFiles(dir);
        var nbFiles = listFiles.Count();


    }
    <div class="modal-header">
        <h4 style="word-wrap:break-word;" class="modal-title">Fichiers contenus dans le répertoire @dir</h4>
        <h3>Nombre de fichiers: @nbFiles</h3>
    </div>

    @{var nb = 0; var idCheck = "";}

    <div class="modal-body">
        <form class="frmMoveFile"> 
            @foreach (var file in listFiles)
            {

                idCheck = "check-"+nb+"-"+dir;
                <div style="border:ridge">
                    <p>
                        <b>Fichier</b> : @Path.GetFileNameWithoutExtension(file) 

                        <b>Extension :</b> @Path.GetExtension(file)

                        <input class="btn btn-primary"  type="checkbox" id=@idCheck value=@file />
                    </p>
                </div>
                nb++;
            }
        <br />
        <br />
        </form>
        <div class="center">
            @{                                                                            
                var idBtnOk =Model;
            }             
            <button value="@dir" class="btnFrmMove">Déplacer fichiers sélectionnés vers l'outbox</button>
            <input class="btn btn-success" type="submit" value="Supprimer log d'erreur">
        </div>
    </div>
</div>

这里是 Javascript 代码:

<script type="text/javascript">
    $('.btnFrmMove').click(function () {
        var path = $(this).attr("value");
        alert(path);
        for (var i = 0; i < 2; i++){
            var idCheckBox = "check-" + i + "-" + path;
            if ($(idCheckBox).is(":checked")) {
                alert($(idCheckBox).attr("value"));
            }
         }

    })
</script>

我错过了什么吗?到目前为止,我还没有做过很多 Web 开发,所以这可能是初学者的错误

【问题讨论】:

  • 我认为您缺少双引号:id=@idCheck -> id="@idCheck"
  • 双引号不能更好地工作..
  • @Timothée 你能打印和比较你在循环中创建的 id,即idCheckBox 的值和生成的 html 中的值吗?
  • @Chintan 我已经尝试过了,它给了我完全相同的东西。我没有指定这个视图是用不同的模型创建的很多次,这就是为什么“btnFrmMove”是一个类而不是 ID,也许我应该有?您还认为我的 ID 中有“\”这一事实可能会搞砸事情吗?我试图删除它们,但它并没有改变任何东西,但这可能是问题的一部分吗?
  • / 是一个元字符。它需要逃脱。 api.jquery.com/category/selectors

标签: javascript c# jquery html checkbox


【解决方案1】:

这行代码的问题:

$(idCheckBox).is(":checked")

您缺少将# 添加到idCheckBox 变量,如下所示:

var idCheckBox = "#check-" + i + "-" + path;

【讨论】:

  • 您好,感谢您的回答,我之前删除了“#”;但即使我添加它也不起作用..
  • id=@idCheckvalue=@file。您是否以正确的形式设置这两个属性?因为我觉得他们缺少@Groben 提到的双引号。该值应类似于 id="..."value="..."
  • 是的,我现在已经改变了它,所以我有 它也没有改变任何东西
【解决方案2】:

因此,当我设法通过将其 ID 更改为更简单的 ID 来访问我的复选框时,我认为问题出在它们是旧 ID 中的特殊字符这一事实。

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多