Javascript jQuery—编写此语句的另一种方法(DRY)

Javascript jQuery—编写此语句的另一种方法(DRY),javascript,jquery,dry,prop,Javascript,Jquery,Dry,Prop,我想知道是否有一种方法可以在不使用if/else的情况下编写以下代码 目前,这一切都很好。但我正试图找出如何利用干式方法,我不喜欢道具写了两次 我有一个文本值,用户需要在文本框中输入该代码。一旦值匹配,它将“启用”提交按钮,否则将禁用它 $( '#input-code' ).on( 'change keyup paste', function() { if ( $( this ).val() == $( "#random-code" ).text() ) { $( '#submit-

我想知道是否有一种方法可以在不使用if/else的情况下编写以下代码

目前,这一切都很好。但我正试图找出如何利用干式方法,我不喜欢道具写了两次

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

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

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

当按钮文本和
内的
文本
相同时,这将
禁用按钮

确保
修剪
文本()
,以删除前导空格和尾随空格,否则它将与按钮文本不匹配

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


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

$( '#input-code' ).on( 'change keyup paste', function() {
    $( '#submit-btn' ).prop( 'disabled', this.value !== $( "#random-code" ).text() );
});
此外,如果您使用的是现代浏览器,您可以在('input'
上使用
,而不是
“change keyup paste”
。不过请检查浏览器支持

$('#input-code').on('change keyup paste', function() {
    $('#submit-btn').prop('disabled', function(){
            return ( $( this ).val() == $( "#random-code" ).text() );
    });
});
有关更多详细信息,请查看此处。。。

将val设置为
!=
条件,并将其用作属性值。在我看来,建议的内联ternaries更难解释。如果你走在线路线,我个人会发现使用
!=
比回溯更容易阅读,以找出整个表达式是反向的。
$('#input-code').on('change keyup paste', function() {
    $('#submit-btn').prop('disabled', function(){
            return ( $( this ).val() == $( "#random-code" ).text() );
    });
});