2

我想知道是否有办法在没有 if / else 的情况下编写以下代码。

目前,这工作正常。但我试图弄清楚如何利用 DRY 方法,我不喜欢道具被写两次的事实。

我有一个文本值,用户需要将该代码输入到文本框中。一旦值匹配,它“启用”提交按钮,否则禁用它。

$( '#input-code' ).on( 'change keyup paste', function() {
  if ( $( this ).val() == $( "#random-code" ).text() ) {
    $( '#submit-btn' ).prop( 'disabled', false );
  } else {
    $( '#submit-btn' ).prop( 'disabled', true );
  }
});
4

3 回答 3

4

您可以将其迁移if..else到内部条件以设置属性,

$( '#input-code' ).on( 'change keyup paste', function() {
    $( '#submit-btn' ).prop( 'disabled', this.value !== $( "#random-code" ).text() );
});

此外,如果您正在处理现代浏览器,您可以只使用on('input'而不是'change keyup paste'. 虽然检查浏览器支持。

于 2015-07-01T05:17:22.200 回答
3

您可以直接在 中使用否定表达式prop

disable当按钮文本和text内部相同时,这将是按钮#random-code

确保trim使用text(), 删除前导和尾随空格,否则它将与按钮文本不匹配。

$('#input-code').on('change keyup paste', function() {
    $('#submit-btn').prop('disabled', !($(this).val() == $.trim($("#random-code").text())));
});

或者

$('#input-code').on('change keyup paste', function() {
    $('#submit-btn').prop('disabled', $(this).val() !== $.trim($("#random-code").text()));
    //                                              ^^^
});
于 2015-07-01T05:16:57.027 回答
0
$('#input-code').on('change keyup paste', function() {
    $('#submit-btn').prop('disabled', function(){
            return ( $( this ).val() == $( "#random-code" ).text() );
    });
});

有关更多详细信息,您可以在此处查看... Jquery prop() 详细信息.....

于 2015-07-01T05:23:11.690 回答