0

ポップアップ ウィンドウで 2 つの動的オブジェクト (1 つは選択、もう 1 つはラジオ ボタン) を使用しています。次に、それらの値を呼び出して Ajax 関数を渡します。しかし、何らかの理由で機能しません。ラジオボタンを削除すると正常に動作します。

オブジェクトを生成する PHP コード:

$submit_newform=
'<form method="POST">
<div id="waiting" style="display:none; font-weight:bold">Please wait ...</div><br />
<table width="100%" border="0" cellspacing="3" cellpadding="3">
  <tr><td colspan="4"><h1>Add Component Itinerary</h1></td></tr>
  <tr>`
    <td width="25">Service:</td>

    <td width="25">
    <select name="cmb_service" id="cmb_service" class="dropdown2">
    <option value="">-Select-</option>';
    foreach($services as $k=>$v)
    $submit_newform.= "<option value=".$k.">".$v."</option>";

    $submit_newform.= '</select></td>

    </tr>;


 $submit_newform.='<tr><td><input type="radio" name="package" id="package" value="package"` `class="packagetype" onClick="callservice_provider();">Package</input></td><td><input` `type="radio" name="package" id="package" value="nopackage" class="packagetype"` `onClick="callpackages();">Without Package</input></td></tr></table></form>';

jquery部分は次のとおりです。

$(document).ready(function() {

        $('input.packagetype').click( function( event ){
            var value = $(this).val();
            if(value =="package")
                {
                    alert("show package");
                }
            else
            {
                var destination = $("#destination").val();
                var service_val = $(cmb_service).val();
                   alert(destination+"+"+service_val);
                $.ajax({
                        type : 'POST',
                        url : '../enquiries/getpricebyajax',
                        dataType : 'json',
                        data: {
                                service : service_val,
                                destno : destination
                        },
                        success : function(data) {
                               alert("success");
                               $('#divserviceprovider').text('');
                               $('#divserviceprovider').append(data.msg);
                               $('#divserviceprovider').show(500);
                               if (data.error === true)
                                    $('#divserviceprovider').show(500);
                        },
                        error : function(XMLHttpRequest, textStatus, errorThrown) {
                            alert("success");
                                $('#waiting').hide(500);
                                $('#divserviceprovider').removeClass().addClass('error')
                                    .text('There was an error.').show(500);
                                $('#divserviceprovider').show(500);
                        }
                });
                return false;
            }
        });
});

オブジェクトselectとの両方がradio button一緒に動作しません。私に提案してください。

前もって感謝します。

4

5 に答える 5

1

そのドロップダウンで選択した値が必要だと思いますか?

$("#cmb_service option:selected").val();
于 2013-01-24T11:50:12.463 に答える
0

コードにいくつかの欠陥があります

1)2つのコントロールに同じIDを指定することはできません。id="package"あなたは両方のラジオボタンに与えました。

2)Ajaxでは、

var service_val = $(cmb_service).val();

この行は、arrorをスローする必要があります。このようにIDにアクセスすることはできません。次のようにアクセスする必要があります

var service_val = $("#cmb_service").val();

コードをもう一度確認してください。

于 2013-01-24T11:49:03.953 に答える
0

私はあなたのコードを少し変更しましたこれが役立つことを願っています

<html>
    <head>
    <title></title>
    <script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
    <script>
    $(document).ready(function() {

        $('input.packagetype').click( function( event ){
            var value = $(this).val();
            if(value =="package")
                {
                    alert("show package");
                }
            else
            {
                var destination = $("#destination").val();
                var service_val = $("#cmb_service").val();
                   alert(destination+"+"+service_val);
                $.ajax({
                        type : 'POST',
                        url : '../enquiries/getpricebyajax',
                        dataType : 'json',
                        data: {
                                service : service_val,
                                destno : destination
                        },
                        success : function(data) {
                               alert("success");
                               $('#divserviceprovider').text('');
                               $('#divserviceprovider').append(data.msg);
                               $('#divserviceprovider').show(500);
                               if (data.error === true)
                                    $('#divserviceprovider').show(500);
                        },
                        error : function(XMLHttpRequest, textStatus, errorThrown) {
                            alert("success");
                                $('#waiting').hide(500);
                                $('#divserviceprovider').removeClass().addClass('error')
                                    .text('There was an error.').show(500);
                                $('#divserviceprovider').show(500);
                        }
                });
                return false;
            }
        });
});
    </script>

    </head>
    <body>
        <?php

        $services =array('apple','orange','grapes');
$submit_newform=
'<form method="POST">
<div id="waiting" style="display:none; font-weight:bold">Please wait ...</div><br />
<table width="100%" border="0" cellspacing="3" cellpadding="3">
  <tr><td colspan="4"><h1>Add Component Itinerary</h1></td></tr>
  <tr>`
    <td width="25">Service:</td>

    <td width="25">
    <select name="cmb_service" id="cmb_service" class="dropdown2">
    <option value="">-Select-</option>';
    foreach($services as $k=>$v)
    $submit_newform.= "<option value=".$k.">".$v."</option>";

    $submit_newform.= '</select></td>

    </tr>;';


 $submit_newform.='<tr><td><input type="radio" name="package" id="package" value="package" class="packagetype" onClick="callservice_provider();">Package</input></td><td><input type="radio" name="package" id="nopackage" value="nopackage" class="packagetype" onClick="callpackages();">Without Package</input></td></tr></table></form>';
 echo $submit_newform;
        ?>
    </body>
</html>

私が言及したいことがいくつかあります。

  1. idラジオボタンには同じものを使用しないでください。
  2. アラートを見たばかりで、今は機能しています。

他に何か必要な場合は私に知らせてください

于 2013-01-24T12:08:28.000 に答える
0

見る

$submit_newform.='<tr><td><input type="radio" name="package" id="package"// same id
                  value="package"` `class="packagetype" 
                  onClick="callservice_provider();">Package</input></td> //</input>
              //--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------^^^^^^^----bad closing
                 <td><input` `type="radio" name="package" id="package" // same id
                 value="nopackage" class="packagetype"
                 onClick="callpackages();">Without Package</input></td>
                </tr></table></form>';

ここで特定のラジオをクリックしている場合、インラインonclickハンドラは必要ありません。

$('input.packagetype').click( function( event ){

そしてあなたの他の部分で:

var service_val = $(cmb_service).val();

次のようになります。

var service_val = $("#cmb_service").val();

したがって、最終的なコードは次のようになります。

$submit_newform.='<tr><td><input type="radio" name="package" id="package1"
                  value="package"` `class="packagetype"/>Package
                  </td> 
                 <td><input type="radio" name="package" id="package2" 
                 value="nopackage" class="packagetype"/>Without Package
                 </td>
                </tr></table></form>';

jQuery:

$(document).ready(function () {

$(document).on('click', 'input.packagetype', function (event) {
    var value = $(this).val();
    if (value == "package") {
        alert("show package");
    } else {
        var destination = $("#destination").val();
        var service_val = $("#cmb_service").val();
        alert(destination + "+" + service_val);
        $.ajax({
            type: 'POST',
            url: '../enquiries/getpricebyajax',
            dataType: 'json',
            data: {
                service: service_val,
                destno: destination
            },
            success: function (data) {
                alert("success");
                $('#divserviceprovider').text('');
                $('#divserviceprovider').append(data.msg);
                $('#divserviceprovider').show(500);
                if (data.error === true) $('#divserviceprovider').show(500);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("success");
                $('#waiting').hide(500);
                $('#divserviceprovider').removeClass().addClass('error')
                    .text('There was an error.').show(500);
                $('#divserviceprovider').show(500);
            }
        });
        return false;
    }
});
});
于 2013-01-24T12:09:25.467 に答える
0

あなたの入力

<input type="radio" name="package" id="package" value="package"` `class="packagetype" onClick="callservice_provider();">Package</input>

入力に終了タグがあるとは思わない(私の知る限り)

<input type="radio" name="package" id="package" value="package" class="packagetype" onClick="callservice_provider();" />Package

そして、jqueryにonclickインライン関数とclickイベントがあります...なぜですか??.. callservice_provider()関数またはjqueryclickイベントのいずれかで、両方を1つにできないのはなぜですか..

ここでハッシュを見逃したと思います

$('#cmb_service').val();
于 2013-01-24T11:47:28.500 に答える