substring正在减去不应该的东西。 jQuery的

时间:2014-01-27 23:00:23

标签: javascript jquery

当我点击它链接到的按钮时,它会减去每个字母,但减去符号。以下代码是否有问题。

$(".Button:eq(2)").click(function(){
    if ($("#Num_View").val($("#Num_View").val().substring($("#Num_View").val($("#Num_View").val().length-1) == "+"))) {
    $("#Num_View").val($("#Num_View").val().substring(0, $("#Num_View").val($("#Num_View").val().length-1)));
    }
    $("#Num_View").val($("#Num_View").val() + "-");
});

代码应该看看输入字段值中的最后一个运算符是否是乘法,除法,加号和减号。如果其中一个在那里,用减号代替它,但如果没有,则添加一个减号。

2 个答案:

答案 0 :(得分:1)

如果你只是删除一个可选的尾随+并添加一个尾随-,那么你可以这样做:

var nv = $("#Num_View");
$(".Button:eq(2)").on( 'click', function(){
    nv.val( nv.val().replace( /\+?$/, '-' ) );
});

var nv = $("#Num_View");
$(".Button:eq(2)").on( 'click', function(){
    nv.val( function(index,value){ return value.replace( /\+?$/, '-' ) } );
});

修改

  

我希望首先检查是否有任何符号在乘法,除法,加法和减号之前。如果其中一个在那里,它用减号替换它。但是,如果没有,那么它将向前推进并添加减号

像这样:

var nv = $("#Num_View");
$(".Button:eq(2)").on( 'click', function(){
    nv.val( nv.val().replace( /[*/+-]?$/, '-' ) );
});

var nv = $("#Num_View");
$(".Button:eq(2)").on( 'click', function(){
    nv.val( function(index,value){ return value.replace( /[*/+-]?$/, '-' ) } );
});

答案 1 :(得分:0)

您似乎想要移除尾随的+(如果有),并将其替换为-

如果是这样,请用以下内容替换回调正文:

$('#Num_View').val(function(_, t) {
    return t.replace(/\+$/, '-');
});

注意:$(el).on('click', f)这些天比$(el).click(f)更受欢迎。如果您始终使用.on注册事件处理程序,则可以避免可能出现的混淆,因为.click用于注册单击处理程序和触发单击事件。