繁体   English   中英

jQuery - 写这个语句的另一种方法(DRY)

[英]jQuery - Another way to write this statement (DRY)

我想知道是否有办法在没有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 );
  }
});

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

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

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

您可以直接在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()));
    //                                              ^^^
});
$('#input-code').on('change keyup paste', function() {
    $('#submit-btn').prop('disabled', function(){
            return ( $( this ).val() == $( "#random-code" ).text() );
    });
});

有关详细信息,请查看此处... Jquery prop()详细信息.....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM