У меня есть обмен внутри входа. Однако шаблон регулярного выражения создается неправильно.
jQuery(this).attr("onchange", "
var cat = jQuery('.coverage');
var dog = 0;
for(var i = 0; i < cat.length; i++){
if(cat[i].value){
dog = parseInt(cat[i].value.replace(/\,/g,''), 10) + dog;
}
}
var pat = new RegExp('\\B(?=(\d{3})+(?!\d))' , 'g');
jQuery('#total').val(dog); ");
шаблон вместо того, чтобы быть:
/\B(?=(d{3})+(?!d))/g
публично заявить:
/B(?=(d{3})+(?!d))/g
Обратите внимание, что onchange attr в этом контексте необходимо печально...
Ну, если атрибут onchange
абсолютно необходим (я действительно не понимаю, почему это было бы), вы все равно можете инкапсулировать всю логику в функцию и использовать ее в встроенном обработчике (это еще более элегантно, чем огромная строка).
//must be global, strongly consider namespacing
function onChange(e) {
//do something
//also all \ must be escaped in a string to put an actual \
var pat = new RegExp('\\B(?=(\\d{3})+(?!\\d))', 'g');
//but your pattern is not even dynamic so you should use a
//regex literal instead of the RegExp constructor.
pat = /\B(?=(\d{3})+(?!\d))/g;
}
jQuery(this).attr("onchange", "onChange(event);");
Однако я действительно не понимаю, почему on
работать не будет?
вы используете реальную функцию вместо атрибута строки onchange, и я изменил
var pat = new RegExp('\\B(?=(\d{3})+(?!\d))', 'g');
в
var pat = new RegExp('\\\B(?=(\d{3})+(?!\d))', 'g');
:
проверьте это, он должен работать:
jQuery(this).change(function(){
var cat = jQuery('.coverage');
var dog = 0;
for(var i = 0; i < cat.length; i++){
if(cat[i].value){
dog = parseInt(cat[i].value.replace(/\,/g,''), 10) + dog;
}
}
var pat = new RegExp('\\\B(?=(\d{3})+(?!\d))' , 'g');
jQuery('#tivcalc').val(dog);
});
Чтобы продолжать использовать attr
вы можете:
function run_onchange(e, elem){
var cat = jQuery('.coverage');
var dog = 0;
for(var i = 0; i < cat.length; i++){
if(cat[i].value){
dog = parseInt(cat[i].value.replace(/\,/g,''), 10) + dog;
}
}
var pat = new RegExp('\\B(?=(\d{3})+(?!\d))' , 'g');
jQuery('#total').val(dog);
}
jQuery(this).attr( "onchange", "run_onchange(event,this);" );
Демо.
on()