2010-10-01 1 views
0

Как я могу изменить этот код, чтобы не допустить 0 и вычеркнуть все символы без номера?Вырезать 0 и любые символы без номера Javascript

<script type="text/javascript"> 
    (function() { 
     var a= document.getElementsByName('a')[0]; 
     var b= document.getElementsByName('b')[0]; 
     var c= document.getElementsByName('c')[0]; 

     a.onchange=b.onchange=a.onkeyup=b.onkeyup= function() { 
      c.value= Math.ceil((a.value/b.value)*100); 
     }; 
    })(); 
</script> 

ответ

2

EDIT: обновленный ответ:

вы просто раздеться все не входит номера, то проверить, если число не 0, то вы можете выполнить вашу функцию.

a.onchange=b.onchange=a.onkeyup=b.onkeyup= function() { 

    // 1. First we will remove all non numbers from the values inputted by the user. 
    var aValue = new String(a.value); 
    var bValue = new String(b.value); 

    //Use regular expressions to strip out the non numbers incase the user types in non numbers. 
    aValue = aValue.replace(/[^0-9]/g, ''); 
    bValue = bValue.replace(/[^0-9]/g, ''); 

    float newAValue = parseFloat("aValue"); 
    float newBValue = parseFloat("bValue"); 

    //2. Then test to see if the user has typed 0 as the value if they haven't then you an perform the maths. 

    if((newAValue != 0) && (newBValue != 0)) 
     c.value= Math.ceil((av/bv)*100); 
    }; 

Надеюсь, это поможет. Спасибо Сообщите мне, если это произойдет.

PK

+0

1) «float» создает синтаксическую ошибку (должен быть «var'), 2) вам не хватает открытой фигурной скобки на третьей-последней строке, 3)' av 'и' bv' не определены и должны быть 'aNewValue' и' bNewValue' на второй до последней строки, 4) он производит «NaN», если на входе – sje397

+0

есть только буквы, которые пытаются заставить это работать, но не имеют много удачи до сих пор – James

+0

держит в результате «NAN» – James

1
a.onchange=b.onchange=a.onkeyup=b.onkeyup= function() { 
    var av = parseFloat(a.value), bv = parseFloat(b.value); 
    if(bv != 0) 
    c.value= Math.ceil((av/bv)*100); 
}; 
+0

c.value = Ьи! = 0? Math.ceil ((av/bv) * 100): «Недопустимый»; // Чтобы очистить поданную, если ошибка. – some

+0

это неправильно по одной основной причине. вы не можете parseFloat просто так, потому что он хочет проверить данные. Если он вводит символ в значение a или b, во время выполнения будет возникать ошибка, так как программа попытается проанализировать число, равное числу nnumber, в float. которые не будут работать. – Pavan

+0

Он не сказал, что хочет проверить данные - и поэтому это зависит от вашей интерпретации «вычеркнуть все символы без номера». Этот метод не вызывает ошибки, но может оценивать входной текст как «NaN», если он не «разбирается». Он просто производит «NaN» для бессмысленного ввода - эффективно игнорирует нечисловой ввод - это моя интерпретация цели OP. – sje397