【问题标题】:codeigniter input fields with same name具有相同名称的 codeigniter 输入字段
【发布时间】:2011-11-20 02:06:33
【问题描述】:

对不起,如果这是一个愚蠢的问题,但我需要一点帮助。

我制作了一个注册表单,我希望人们选择 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;    
        }

    }

【问题讨论】:

  • 你需要发布你的回调函数

标签: validation codeigniter select radio


【解决方案1】:

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

您应该创建一个选择字段来更改从“telefon”字段向下滑动的输入类型,而不是有两个具有相同名称的输入字段(php 脚本只会读取最后一个,顺便说一句)。

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

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

<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('');
    }

});

请注意:我没有测试过这段代码。它背后的一般想法是,您为电话字段运行的过滤器会根据您对选择字段的选择而变化。

【讨论】:

  • 首先感谢您花时间在我的问题上,是的,更具体的答案会很棒
  • 爱你,它成功了,用电话号码插件修改了它,非常感谢,感觉有点笨,谢谢你花时间在我的问题上
  • 有时您需要另一组眼球。乐于助人。
【解决方案2】:

您的问题已经answered。 Phil Sturgeon 正在解决这个问题,因此您可以尝试使用来自 github 的 CI 开发分支。

【讨论】:

  • 我不认为这是 OP 的问题。 OP 的问题是他有两个同名字段,并且只想要来自任一字段的输入。由于 PHP(以及 codeigniter)只会读取名为“telefon”的最后一个字段,因此 codeigniter 只会读取 id='ukran' 的字段以进行验证。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2016-08-25
    • 2017-11-06
    • 2010-10-03
    • 2022-01-09
    相关资源
    最近更新 更多