提交/错误后重新选择下拉列表。验证

时间:2013-10-13 16:25:44

标签: javascript php html ajax codeigniter

我很抱歉,但是我的大脑在这个上面完全模糊了。 如果验证出错,我想让我的下拉列表'editprojectSelect'被选中。附:在我发布的图片中你可以看到我特意输入了一个字符串'test',其中应该有一个整数。

     <div id="project-wijzigen" class="form">
        <h2> Wijzig een project </h2>       

        <select id="editprojectSelect" name="editprojectSelect" onchange="getDetails()">
        <option value="">-</option>
        </select>
        <?php echo '<input type="hidden" id="hidden-input" value="'.$_POST['editProjectSelect'].'">';?>
        <div id="editProject">
            <?php echo form_open('c_admin/wijzigProject');?>
                <h2 id="hoofding"></h2>
                <div><label> Project titel: </label> <input type="text" id="pt" name="titel" required value="<?php echo set_value('projecttitel'); ?>"/></div>
                <div><label> Startdatum: </label> <input type="text" id="sd" name="start" required value="<?php echo set_value('startdatum'); ?>"/></div>
                <div><label> Einddatum: </label> <input type="text" id="ed" name="eind" required value="<?php echo set_value('einddatum'); ?>"/></div>
                <div><label> In samenwerking met: </label> <input type="text" id="samen" name="samen" required value="<?php echo set_value('ism'); ?>"/></div>
                <div><label> Omschrijving: </label> <textarea id="omschr" name="text" required value="<?php echo set_value('text'); ?>"></textarea></div>
                <input type="hidden" id="hiddenID" name="hiddenID" />

                <input type="submit" name="submit" value="Wijzig project"/>

            <?php echo form_close(); ?>
        </div>

     <?php  

// --------------------------- Error checking/display           
            if(isset($projectWijzigenError)) // check of de variabele wel een waarde heeft (als je die zomaar oproept en hij moest leeg of NULL zijn dan krijg je een error op je pagina)
                {
                if ($projectWijzigenError=='true') // ALS er een error is, dan opent de form terug en worden errors weergegeven
                {
?>
                    <script>
                    $("#editProjectSelect").val($('#hidden-input').val());
                    $('#project-wijzigen').show();
                    $(this).toggleClass('close');
                    </script>

<?php 
                echo validation_errors('<p class="error">'); 
                }  
                }
// -------------------------- End error checking/displaying             
?>

    </div>


---------------
        $(document).ready(function()
        {           
            $(function()
            { 
                $.ajax(
                {
                    url:"<?php echo site_url("c_admin/ajaxTitels");?>",
                    type: 'POST',
                    success: function(msg)
                    {                           
                        var jsonMsg = $.parseJSON(msg);
                        var count = Object.keys(jsonMsg).length;
                        for(var x = 0; x < count; x++)
                        {   
                            $("#projectSelect").append($("<option></option>").val(jsonMsg[x].ProjectID).html(jsonMsg[x].Projecttitel)); 
                            $("#delprojectSelect").append($("<option></option>").val(jsonMsg[x].ProjectID).html(jsonMsg[x].Projecttitel));
                            $("#editprojectSelect").append($("<option></option>").val(jsonMsg[x].ProjectID).html(jsonMsg[x].Projecttitel));             
                        }
                    }
                });       
            });     
        })
        function getDetails()
        {   
            //$("#editProject").empty();
            document.getElementById('editProject').style.display = "none";
            $(".error").empty();
            var sel = document.getElementById('editprojectSelect');
            var opt = sel.options[sel.selectedIndex];
            var p = opt.value;

            if(p != "")
            {
                document.getElementById('editProject').style.display = "block";
                //$("#editProject").append($("<label></label><br />").html("test"));
                $.ajax(
                {
                url:"<?php echo site_url("c_admin/ajaxProject");?>",
                type: 'POST',
                data: {project: p},
                success: function(msg)
                    {                       
                        var jsonMsg = $.parseJSON(msg);

                        $('#hoofding').html(jsonMsg.Projecttitel);
                        document.getElementById("pt").value = jsonMsg.Projecttitel;
                        document.getElementById("sd").value = jsonMsg.Startdatum;
                        document.getElementById("ed").value = jsonMsg.Einddatum;
                        document.getElementById("samen").value = jsonMsg.ISM;
                        document.getElementById("omschr").value = jsonMsg.Projecttekst;
                        document.getElementById("hiddenID").value = jsonMsg.ProjectID;

                    }
                });
            }
        }

enter image description here

1 个答案:

答案 0 :(得分:0)

$(document).ready(function()
{           
    $(function()
    { 
        $.ajax(
        {
            url:"<?php echo site_url("c_admin/ajaxTitels");?>",
            type: 'POST',
            success: function(msg)
            {                           
                var jsonMsg = $.parseJSON(msg);
                var count = Object.keys(jsonMsg).length;
                for(var x = 0; x < count; x++)
                {   
                    $("#projectSelect").append($("<option></option>").val(jsonMsg[x].ProjectID).html(jsonMsg[x].Projecttitel)); 
                    $("#delprojectSelect").append($("<option></option>").val(jsonMsg[x].ProjectID).html(jsonMsg[x].Projecttitel));
                    $("#editprojectSelect").append($("<option></option>").val(jsonMsg[x].ProjectID).html(jsonMsg[x].Projecttitel));             
                }
            }
        });       
    });
    if(isset($projectWijzigenError) AND ($projectWijzigenError == true)){
        var projectId = '<?php echo set_value('editProjectSelect'); ?>';
        //set the select field
        $("#editProjectSelect").val(projectId);
        //call the getDetails function to populate your fields
        getDetails();    
    }

您的<select>字段不在<form>元素内。因此,当您提交表单时,该字段未提交,并且PHP / codeigniter不知道您的旧值。

您可以做的是,将选择字段放在表单中。 提交表单后,如果存在验证错误,请执行以下操作:

  1. 获取editprojectSelect的值,并在ajax调用后的jquery的$(document).ready部分中,将select的值设置为从表单中获取的值。
  2. 之后,请致电getDetails()功能。