codeigniter输入具有相同名称的字段

时间:2011-09-19 09:15:58

标签: validation codeigniter select radio

抱歉,如果这是一个愚蠢的问题,但我需要一些帮助。

我做了一个注册表格,我想让人们选择2个电话号码。

如果我选择匈牙利语,匈牙利电话类型输入向下滑动,如果他选择乌克兰而不是乌克兰电话输入类型滑下来。

这是html

    <input type='text' name='telefon' id='magyar' class='input_title' value='<?php echo set_value('telefon'); ?>' />

    <input type='text' name='telefon' id='ukran' class='input_title' value='<?php echo set_value('telefon'); ?>' />

    <div class='hiba'><?php echo form_error('telefon'); ?></div>    

magyar = hingarian 
ukran = ukraine
telefon = phone
telo_tipus = phoe type

我的问题是验证,如果我选择匈牙利语并填写它说我需要添加一个电话号码,但如果我选择乌克兰它的确定

这是验证

$this->form_validation->set_rules('telefon', 'Telefon', 'required|callback_hasznalt_telefon');

可以请某人指出验证中缺少什么吗?

我尝试使用na = telefon [],但在这种情况下,验证无法正常工作

回调仅验证手机是否正常,但此处

function hasznalt_telefon()
    {
        $telefon = trim($this->input->post('telefon'));

        $query  = $this->db->query(' SELECT telefon FROM felhasznalok WHERE telefon = "'.$telefon.'" ');

        if($query->num_rows() > 0) 
        {
            $this->form_validation->set_message('hasznalt_telefon', 'Ez a telefonszám  már használatban van '); 
            return false;
        } 
        else 
        {
            return true;    
        }

    }

3 个答案:

答案 0 :(得分:2)

您的codeigniter代码很好,但您的html / javascript是需要更改的内容。

不应该有两个具有相同名称的输入字段(php脚本只会读取最后一个,btw),您应该创建一个选择字段,以更改输入类型从'telefon'字段向下滑动。

我不确定你使用的是什么javascript,但是在jquery中你可以从select字段中选择绑定输入字段事件。

如果您需要更具体的指导,请告诉我,我会编辑我的答案。

<select id="telefon_type">
    <option>Telefon Type</option>
    <option value="magyar">Magyar</option>
    <option value="ukran">Ukran</option>
</select>

<input type="text" name="telefon" id="telefon" disabled />

$("#telefon_type").bind("change", function() {
    $("#telefon").removeAttr("disabled");

    if ($(this).val() == "magyar") {
        $("#telefon").bind("focus",function() {
            // onfocus event for #telefon for magyar
        });
    } else if ($(this).val() == "ukran") {
        $("#telefon").bind("focus",function() {
            // onfocus event for #telefon for ukran
        });
    } else {
        $("#telefon").attr("disabled","disabled");
        $("#telefon").val('');
    }

});

请注意:我尚未测试此代码。它背后的一般想法是,您为telefon字段运行的过滤器会根据您选择的选择字段而改变。

答案 1 :(得分:1)

您的问题已经answered。 Phil Sturgeon正在研究这个问题,所以你可以尝试从github使用CI的开发分支。

答案 2 :(得分:1)

如果你只想要一个电话号码(取决于国籍),我认为当你只使用一个输入字段并将其值写入数据库(或做你想做的任何事情)时,它会更简单。或者有任何理由使用两个输入字段吗?