【问题标题】:How can i add the value of input with name attribute?如何使用名称属性添加输入值?
【发布时间】:2021-05-31 12:03:00
【问题描述】:

如何使用 jquery 添加带有 name 属性的输入值?我只得到第一个输入值。

<div class="col-md-12"><label>Question 1 </label></div>
<div class="col-md-12"><input class="form-control" type="text" name="faq-page1" id="faq-page1" placeholder="Question 1"></div>
<input type="hidden" name="faq_name" value="1">
<div class="col-md-12"><input class="form-control" type="url" name="faq-url1" id="faq-url1" placeholder="Answer 1"></div>
<div class="col-md-12"><label>Question 2</label></div>
<div class="col-md-12"><input class="form-control" type="text" name="faq-page2" id="faq-page2" placeholder="Question 2"></div>
<input type="hidden" name="faq_name" value="1">
<div class="col-md-12"><input class="form-control" type="url" name="faq-url2" id="faq-url2" placeholder="Answer 2"></div>

我试过了

var faq_name_value = $("input[name=faq_name]").val();

我实际上想添加所有隐藏的输入值。

【问题讨论】:

  • 你能分享出来吗,它肯定会在 console.log() 中给你 1。同样这里所有的输入标签都具有相同的名称值,您应该通过 id 选择或添加一些类来区分

标签: jquery


【解决方案1】:

我实际上想添加所有隐藏的输入值。

我建议使用以下选择器来获取所有 type="hidden" &lt;input&gt; 的:
有关更多信息,请查看:jQuery access input hidden value

$("input[type=hidden]")

然后,我们可以使用.each()loop over元素:

Demo sn-p记录每个值:

$("input[type=hidden]").each((i, e) => {
    console.log(e.value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-12"><label>Question 1 </label></div>
<div class="col-md-12"><input class="form-control" type="text" name="faq-page1" id="faq-page1" placeholder="Question 1"></div>
<input type="hidden" name="faq_name" value="1">
<div class="col-md-12"><input class="form-control" type="url" name="faq-url1" id="faq-url1" placeholder="Answer 1"></div>
<div class="col-md-12"><label>Question 2</label></div>
<div class="col-md-12"><input class="form-control" type="text" name="faq-page2" id="faq-page2" placeholder="Question 2"></div>
<input type="hidden" name="faq_name" value="1">
<div class="col-md-12"><input class="form-control" type="url" name="faq-url2" id="faq-url2" placeholder="Answer 2"></div>

如果您想添加每个值,例如 1+1+5,我们需要添加更多检查以确保这些值是数字,以防止出现类似 1+1+abc 的情况。

我使用this 函数来检查“值”是否为数字。

Demo sn-p记录每个值的总和:

let total = 0;

$("input[type=hidden]").each((i, e) => {
    if (isNumeric(e.value)) {
        total += parseInt(e.value);
    }
});

console.log('Total: ', total);


// https://stackoverflow.com/questions/175739/built-in-way-in-javascript-to-check-if-a-string-is-a-valid-number
function isNumeric(str) {
    if (typeof str != "string") return false 
    return !isNaN(str) && !isNaN(parseFloat(str));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-12"><label>Question 1 </label></div>
<div class="col-md-12"><input class="form-control" type="text" name="faq-page1" id="faq-page1" placeholder="Question 1"></div>
<input type="hidden" name="faq_name" value="1">
<div class="col-md-12"><input class="form-control" type="url" name="faq-url1" id="faq-url1" placeholder="Answer 1"></div>
<div class="col-md-12"><label>Question 2</label></div>
<div class="col-md-12"><input class="form-control" type="text" name="faq-page2" id="faq-page2" placeholder="Question 2"></div>
<input type="hidden" name="faq_name" value="1">
<div class="col-md-12"><input class="form-control" type="url" name="faq-url2" id="faq-url2" placeholder="Answer 2"></div>
<input type="hidden" name="faq_name" value="abc15">

【讨论】:

  • 如果有其他不同名称的隐藏输入会中断
  • 你能澄清一下@charlietfl吗?不明白你的意思。添加类似&lt;input type="hidden" name="faq_name2" value="5"&gt; 的内容会在现有元素旁边给出5 的预期结果。
  • &lt;input type="hidden" name="csrf_token" value="fklw-5577-rrrr"/&gt;怎么样
  • 按预期在console.log 中显示fklw-5577-rrrr。仍然不确定使用此方法可能会失败的“价值”。
  • 我将“add”解释为1+1+1=3。可能是我的解释是错误的,但这是我对这个问题的初步解释,OP 专门针对 name
猜你喜欢
  • 2021-08-29
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 2011-12-29
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
相关资源
最近更新 更多