.serialize()如果字段为空,则不显示帖子中的输入名称

时间:2018-10-29 10:14:08

标签: javascript java jquery html5 css3

有一个问题。我有cognitoUser = getCognitoUser(req); cognitoUser.refreshSession(RefreshToken, (err, session) => { if (err) throw err; //get token code }); getCognitoUser = function(req) { const poolData = { UserPoolId : COGNITO_USER_POOL_ID, ClientId : COGNITO_CLIENT_ID }; const userPool = new CognitoUserPool(poolData); const userData = { Username : req.user.email, Pool : userPool }; return new CognitoUser(userData); }; ,并且如果字段为空,不要在帖子中显示输入的名称,以便发布得更干净。但是不知道如何。

.serialize()
<form id="profile-form" method="post">
  <div class="form-group">
    <input name="Profile-twitter" type="text"  id="inputTwitter" placeholder="Twitter Link">
    <input name="Profile-youTube" type="text"  id="inputYouTube" placeholder="YouTube Link">
  </div>
  <button type="submit" id="Profile-submit">Profil aktualisieren</button>
</form>

2 个答案:

答案 0 :(得分:1)

更常见的解决方法是在表单的serilizeArray()上使用filter()方法,

无论您使用serialize()还是serilizeArray()都没什么区别,两种情况下您都会得到相同的 post变量,在这里我们使用{{ 1}}。

@sivaprasad的答案仅适用于输入(我知道提问者也只希望输入解决方案),

,但是您可以使用serilizeArray()内置函数 {{1 }}。

有关更简单的解决方案,请参见下文,该解决方案也适用于所有表单元素(输入,文本区域,复选框,单选按钮等):

javascript
filter()
//JAVASCRIPT or <script> tag

$("form").on("submit", function (event) {
   event.preventDefault();
   let filteredArray = $('#profile-form').serializeArray().filter(function (k) {
      return $.trim(k.value);
   });
   console.log(filteredArray);
});

简短而醒目的 javascript(ES6)箭头功能,用于过滤serializeArray()

/*** CSS ***/

.form-group {
  margin-bottom: 15px;
}

label {
  display: block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: 700;
}

答案 1 :(得分:0)

尝试一下

    $( "form" ).on( "submit", function( event ) {
        event.preventDefault();
        var flag = false;
        //if($("#inputTwitter").val() != "" && $("#inputYouTube").val() != "")
        $(this).find(">div>input").each(function(index, el){
            if ($(el).val().length == 0) 
                flag = true; 
        });
        if( !flag )
            console.log( $( this ).serialize() );
    });