我可以从类型编号中获取字符串值

时间:2015-03-13 11:08:29

标签: javascript jquery html html5

我输入的类型编号如此

<input type="number" class="number" min="0" max="999999" value="0" id="id">

当我使用此代码时

$("#id").val();

如果它的数字如1则返回数字

但如果不是1+1这样的数字,则返回空字符串""

我可以通过类型编号获得实际值,或者我必须更改为文本才能这样做

我用chrome和firefox测试它

我知道它适用于文字类型

但我希望更快的解决方案,如果有非然后我会将其更改为文本并重写代码


这是我的问题 现在,当我使用jquery将类型更改为文本时,删除值可以更改它而不删除值吗?

$('#id').attr('type','text')

我想要做的是让类型文本获取值并将其返回到数字

3 个答案:

答案 0 :(得分:2)

您无法使用<input type='number'/>

执行此操作

<input type="number" >会指望你输入一个数字,所以如果你输入1+1之类的东西,它就不会被认为是一个数字,所以返回一个空字符串&#34;&#34;。< / p>

您可以使用<input type=text/>

请参阅此fiddle

&#13;
&#13;
$('input').on('change', function() {
  var strVal = $("#id").val();
  var intVal = eval(strVal);
  alert(intVal);

})
&#13;
  

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="number" value="0" id="id">
&#13;
&#13;
&#13;

修改

如果你不能改变整个html,你可以使用jquery改变元素的类型,

$('input[type=number]').attr('type','text')

将其放在页面加载

答案 1 :(得分:1)

如果有人需要 input type="number" ,那是有原因的。

前提:我不是提出最初问题的罗伯特 :-)

但是……

无论如何,我和提出最初问题(命运问题?)的罗伯特完全一样

进行更深入的研究,我找到了这个答案 JavaScript get clipboard data on paste event (Cross browser)

我两次喜欢它,因为它是纯原生 JavaScript

我用 input type = "number" 编写了这段代码,它的作用就像一个魅力

主要行为是因为我想要 input type = "number" 是这种输入类型,当专注于移动时会打开数字键盘而不是字母键盘。这里输入驱动,只能按数字和破折号

但是在我的应用程序中,他们可以粘贴数字..所以检查粘贴事件是一个合乎逻辑的结果

试试

function handlePaste (e) {
    var clipboardData, pastedData;

    // Stop data actually being pasted into div
    e.stopPropagation();
    e.preventDefault();

    // Get pasted data via clipboard API
    clipboardData = e.clipboardData || window.clipboardData;
    pastedData = clipboardData.getData('Text');
    
    // Do whatever with pasteddata
    alert(pastedData);
}

document.getElementById('myInput').addEventListener('paste', handlePaste);
<p>This example uses the addEventListener() method to attach a "paste" event to an input type="number" element. Paste some text in the input...</p>

<input type="number" id="myInput" value="Try to paste something in here" size="40">

答案 2 :(得分:0)

确定解决问题的方法

$('input[type=number]').each(function(){
  var val = $(this).val();
  $(this).attr('type','text');
  $(this).val(val);
});

上面的代码适用于所有类型为number的输入。如果您只想在第一行中使用一个use class或id。如果你想从1 + 1这样的字符串中计算值,你可以在try catch块中使用eval。但这通常是一个更复杂的解决方案。