2014-08-30 4 views
0

я пытаюсь найти определенный текст внутри текстового поля с помощью JQuery или Javascript, но это `ы не работает на хромеJavascript содержит не работает на хроме

Senerio: я хочу добавить .0 после строки, но если. 0 или 0,5 и т.д., уже существует, то не добавляйте .0 после строки

$("#ctl00_ContentPlaceHolder1_txtquantity").blur(function() { 
        var stringvalue = $("#ctl00_ContentPlaceHolder1_txtquantity").val(); 
        if (!stringvalue.contains('.0')) { 
         var result = stringvalue + ".0"; 
         stringvalue = result; 
         $("#ctl00_ContentPlaceHolder1_txtquantity").val(stringvalue); 

        } 
        }); 
+1

Возможно, вам придется включить polyfill для функции сложения. На сайте MDN есть один готовый к работе: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains – jeff

ответ

3

это не крест решения браузера еще использовать String.prototype.contains.

Вы можете использовать регулярное выражение, хотя, чтобы проверить, подходит ли он конец вашей строки

Заменить

if (!stringvalue.contains('.0')) { 

По

if (!stringvalue.match(/\.[0-9]+$/)) { 

Кроме того, даже если бы это был кросс-браузер, String.prototype.contains не будет делать то, что вы хотите, поскольку вам нужно покрывать случаи для любой последовательности цифр за мантиссой. Это потребует, чтобы вы проверили каждый из 10 вариантов использования (от 0 до 9), поскольку contains принимает только строку поиска и необязательную начальную позицию.

Еще страннее случай использования, если ваш номер заканчивается только с "." который является интерпретируемым поплавком в JavaScript ...

В этом случае вы можете использовать жадное регулярное выражение, чтобы сделать это:

if (!stringvalue.match(/\.[0-9]*$/)) { 
+0

Большое спасибо @aduch –

Смежные вопросы