0

我在弹出窗口中使用两个动态对象(一个是选择,另一个是单选按钮)。然后调用它们的值来传递 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;
            }
        });
});

两个对象selectradio button不能一起工作。请给我建议。

提前致谢。

4

5 回答 5

1

我假设您想要该下拉列表的选定值?

$("#cmb_service option:selected").val();
于 2013-01-24T11:50:12.463 回答
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事件中......

我想你在这里错过了哈希

$('#cmb_service').val();
于 2013-01-24T11:47:28.500 回答
0

你的代码有一些缺陷

1)您不能为两个控件提供相同的 id。您已经id="package"为两个单选按钮提供了支持。

2)在阿贾克斯,

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

这条线应该抛出一个错误。你不能像这样访问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 回答