2013-10-25 108 views
2

我一直在尝试应用我在Google和Stackoverflow上找到的解决方案,但他们似乎没有工作。将文本框的值转换为int

这里究竟出了什么问题?复选框在这里是微不足道的,我可以把它拿出来,但它没有区别。

<div class="form-group"> 
    <label for="tbid" class="col-lg-3 control-label">Results per page </label> 
     <div class="col-lg-3"> 
      <input type="checkbox" class="checkbox" display="inline-block" name="checkbox_results" onclick="checkbox_results_click();"> 
      <input type="text" id="results" class="form-control" name="results" placeholder="results"> 
     </div> 
</div> 

然后在js部分,我试图将结果转换为int。

<script type="text/javascript"> 
    int results = null; 
    var x=document.getElementById("results").value; 

    results = parseInt(x); 
    if(results==null) 
     results=10; 

    var pager = new Pager(results); 

</script> 

编辑:我还要补充一点,如果我只是把一个int型参数调用时,寻呼机,像25,例如,它的实际工作。所以结果出了问题。

+0

注ŧ帽子[parseInt](http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.2.2)总是返回一个数字或NaN,两者都不是'== null'。所以测试应该是'if(!isNaN(results))'。另外,parseInt应该和基数一起使用'parseInt(x,10)' – RobG

+0

是的,我一开始就做了x,10,但它似乎没有什么区别。不管什么原因,它都没有进入寻呼机。我现在将它改回 – krikara

+0

基数不会解决您的问题,它只是意味着* results *将被设置为您期望的值。 'parseInt('09')'在某些浏览器中返回'9',在其他浏览器中'1',而'parseInt('09',10)'返回'9'。 – RobG

回答

0

有一个在JS没有int,你可以这样做:

var results; 
var x=document.getElementById("results").value; 

results = /^[\d]+$/.test(x); 
if(!results) 
    results=10; 

var pager = new Pager(results); 
+0

嗯,这个“结果”给了我这个谷歌浏览器出现错误“页面上的脚本使用了太多内存,重新加载以再次启用脚本” – krikara

0

诀窍是+(element.value),加上||情况下的default_value无效,或者什么都不是。或者添加你自己的支票。

<!DOCTYPE html> 
<html><head><title>to int()</title> 
<script type="text/javascript"> 
function doResults() 
{ 
    var element = document.getElementById('results'), 
     value = +(element.value) || 0; 

    // write back the value in case is invalid 
    element.value = value; 

    alert("The value is " + value); 
} 
</script></head> 
<body> 
<input type="text" id="results" class="form-control" name="results" placeholder="results"> 
<button onclick="doResults();">Check Results</button> 
</body></html> 
1

而不是使用parseInt使用parseFloat它会像这样

results = parseFloat(x); 
0

使用parseFloat它会像这样

<script type="text/javascript"> 
 
    int results = null; 
 
    var x=document.getElementById("results").value; 
 

 
    results = parseFloat(x); 
 
    if(results==null) 
 
     results=10; 
 

 
    var pager = new Pager(results); 
 

 
</script>