CodeIgniter表单开发:用表单助手在表单内添加多按钮
使用CodeIgniter表单助手创建带额外按钮的表单
没问题,这事儿其实挺简单的,核心要注意的就是额外按钮的type属性——HTML里<button>默认的type是submit,要是不特意指定,点它的时候会直接触发表单提交,这肯定不是你想要的效果。下面给你完整的实现方案:
完整示例代码
<?php // 先加载表单助手(如果控制器里没全局加载的话) $this->load->helper('form'); ?> <?php echo form_open('client/send_message'); ?> <!-- 文本输入框,用表单助手函数或者原生标签都可以 --> <?php echo form_input([ 'name' => 'message', 'required' => 'required', 'placeholder' => '请输入消息内容' ]); ?> <!-- 表单提交按钮,用原生button标签或者form_submit()生成都行 --> <button class="btn btn-primary btn-block" type="submit">Send</button> <!-- 触发模态框的额外按钮,必须指定type="button"! --> <button class="btn btn-default btn-block" type="button" data-toggle="modal" data-target="#my_modal">Send Email</button> <?php echo form_close(); ?>
关键细节说明
- 表单助手加载:如果你的项目没有在全局配置里自动加载表单助手,一定要先调用
$this->load->helper('form'),不然form_open()这些函数会报错。 - 额外按钮的type属性:这是最容易踩坑的点!给非提交按钮加上
type="button",明确告诉浏览器这只是一个普通交互按钮,不会触发表单提交。 - 灵活选择写法:要是你习惯全用CodeIgniter的表单函数生成元素,提交按钮也可以这么写:
但额外按钮因为要加<?php echo form_submit([ 'class' => 'btn btn-primary btn-block', 'value' => 'Send' ]); ?>data-toggle这类自定义属性,直接写原生<button>标签反而更灵活。
补充:给额外按钮加自定义逻辑
要是你想让这个按钮触发JS事件,直接在标签里加onclick或者后续用JS绑定事件就行,完全不会影响表单的正常提交逻辑:
<button class="btn btn-default btn-block" type="button" onclick="handleEmailBtn()">Send Email</button>
内容的提问来源于stack exchange,提问作者Valkay
相关产品推荐
相关产品推荐

