如何从输入字段属性输出文本?由于我这样做了,它只正确显示数字,而不是文本显示 NaN(您需要获取 TEXT),我附上了代码,您可以通过单击 + 来查看它显示的内容:
$('body').on('click', 'button.plus, button.minus', function() {
var qty = $(this).parent().find('input'),
name = parseInt(qty.attr('qwe'));
console.log(name);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="input-number">
<button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
<input class="block" name="kol" type="number" value="13" id="50" qwe="123" min="1" max="50" step="1">
<button type="button" name="valueUp" onclick="steUp()" class="input-number-up plus">+</button>
</div>
<div class="input-number">
<button type="button" name="valueDown" onclick="stepDown()" class="input-number-down minus">-</button>
<input class="block" name="kol" type="number" value="13" id="50" qwe="Текст" min="1" max="50" step="1">
<button type="button" name="valueUp" onclick="steUp()" class="input-number-up plus">+</button>
</div>
你所有问题的根源在于:
因此,您首先收到了属性的数值,并在帮助下
parseInt()
将其转换为数字。但是,然后,使用相同的事件处理程序,您从相同的属性中获得一个字符串(仅在不同的元素中)
您获得一个字符串,尝试解析它
parseInt()
并自然地得到一个错误。我不知道你的目标到底是什么,所以我将尝试描述几种解决方案。
选项编号 1
让我们假设您确实面临这样的情况,您只需要将字符串和整数值都存储在同一个属性中,并在同一个事件处理程序中处理它们。
那么如何摆脱这种情况呢?
这很简单:您需要以某种方式确定我们作为输入的数字或字符串。
为此,我们可以基于一对正则表达式编写一个简单的函数,该函数确定传递的字符串 "是否为数字:
因此,稍后我们可以在属性中定义一个数字或仅定义一个字符串,并根据此将整个事物带入一个数字或按原样保存
好吧,或者一切都一样,只有一行:
注意
我想注意,您还将事件处理程序附加到布局中的按钮
它们不在问题范围内,而且它们也抛出错误,所以我在下面给出两个工作示例,但是:
onclick="stepDown()"
并onclick="steUp()"
stepDown()
和steUp()
没有点击
带 steUp 和 stepDown 插头
选项编号 2
嗯,第二种选择就是将这些值按不同的属性分开,分别获取
因此,我只是代替
和
在不同的元素中,我只指定两个不同的属性
qwe-int
和qwe-string
然后我分别得到它们,将它们保存在两个不同的变量中,并将其中一个带入一个数字
这里我只指出一个带有stubs的选项(onclick,如果需要,你可以自己去掉)