1

フォームに検証を追加しようとしています。私は私が望むことを正確に実行しているjQuery関数を持っています:

      jQuery('#post').submit(function() {
                if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').removeClass('button-primary-disabled');
                    return true;
                }else{
                    alert("Please set a Featured Image!");
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').addClass('button-primary-disabled');
                    return false;
                }
                return false;
            });

ただし、ページの他の場所にあるラジオボタンが選択されている場合にのみこの機能が実行されるように変更したいと思います。だから私はこれを試しました:

if (jQuery('#top').checked) {
      jQuery('#post').submit(function() {
                if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').removeClass('button-primary-disabled');
                    return true;
                }else{
                    alert("Please set a Featured Image!");
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').addClass('button-primary-disabled');
                    return false;
                }
                return false;
            });
    }

これは機能しません。#topがチェックされていても、関数は呼び出されません。誰かが理由を説明できますか?私はPHPに慣れており、JavaScriptはしばしば私にカーブボールを投げます。

4

3 に答える 3

1

FirebugまたはChromeコンソールは何を教えてくれますか?あなたはこのようなことを試すことができます:

$('#top').is(':checked')

(RETに感謝)のように:

jQuery('#post').submit(function() {
  if ($('#top').is(':checked')) {
    if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
      jQuery('#ajax-loading').hide();
      jQuery('#publish').removeClass('button-primary-disabled');
      return true;
    }else{
      alert("Please set a Featured Image!");
      jQuery('#ajax-loading').hide();
      jQuery('#publish').addClass('button-primary-disabled');
      return false;
    }
  }
  return false;
});
于 2013-02-01T00:00:47.503 に答える
0

試す

$('#top').is(':checked')

ただし、関数submitは関数をバインドするだけで、submitがクリックされるたびに関数を呼び出します。したがって、送信機能にチェック済みチェックを入れる必要があります

  jQuery('#post').submit(function() {

            if(!$('top').is(':checked')){ return };

            if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
                jQuery('#ajax-loading').hide();
                jQuery('#publish').removeClass('button-primary-disabled');
                return true;
            }

            alert("Please set a Featured Image!");
            jQuery('#ajax-loading').hide();
            jQuery('#publish').addClass('button-primary-disabled');
            return false;

        });
于 2013-02-01T00:05:00.553 に答える
0

ええ、そのロジックはあなたが望んでいることを完全には実行しません。次のようなものを試してください:

  jQuery('#post').submit(function() {
      if ($('#top').is(':checked')) {
            // all your existing code

私は間違っている可能性がありますが、@ greenerによって与えられた答えは機能しないと思います。これ#topは、ページの作成時にチェックされた場合にのみ送信関数を宣言するためです。

于 2013-02-01T00:05:34.790 に答える