已解决:在联系控制器中,我拥有function index
页面位置,然后是一个单独的名为function send_mail
. 我删除了 send_mail 函数并将代码移至 index 函数,当发送电子邮件或返回错误消息时,它将 url 保留为 /contact 而不是 /contact/send_mail,现在下拉菜单现在可以工作了!当然,在我的联系人视图中,我更改 echo form_open('contact/send_email');
为 echoform_open('contact');
我使用 Codeigniter 框架构建了一个响应式网站。
当屏幕尺寸缩小到手机/平板电脑的宽度时,导航将从按钮变为下拉选择菜单。
我的控制器中有一个名为 send_mail 的函数,当用户单击表单时,如果他们填写的表单不正确或成功消息,他们将收到一条错误消息,并且在单击此按钮时在 URL 中添加 send_mail 最后其中。
表单确实提交并且所有工作,但在测试时;只有当响应式站点更改为下拉选择菜单并将 send_mail 添加到 url 的末尾时,您才能导航到另一个页面 - 它只是停留在同一页面上。
目前我正在测试并且我已经在本地主机上构建了该站点,所以不确定它是否只是这个或可能的解决方案?
在这篇文章中,我没有添加任何代码(但如果有帮助的话可以),因为我作为指导或建议询问为什么这不起作用?这是否与我的媒体查询或下拉菜单有关,因为即使 send_mail 在最后,当它是其他宽度作为按钮时它仍然有效?
代码如下:
提交表单时,是否有一种可能的方法将 send_email 函数隐藏在路由文件夹中的 url 中,因此它只是显示http:///www.websitename/contact
而不是http:///www.websitename/contact/email_send
当用户被发送回表单时,这与“if 语句”有关吗?
同样,当使用标准导航样式在其他宽度下调整站点大小时,一切都可以正常工作,只是隐藏的下拉列表,直到它显示在媒体查询中。
选择菜单的 HTML(除非移动版本,否则它是隐藏的)
<option value="" selected="selected">MENU</option>
<option value="Home">Home</option>
<option value="about">About</option>
<option value="testimonials">Testimonials</option>
<option value="blog">Blog</option>
<option value="contact">Contact</option>
</select>
CSS媒体查询(移动)
nav ul { display: none; }
nav select { display: inline-block; }
用于响应式导航的 Jquery
联系人控制器中的 send_email 函数
public function send_email (){
$this->load->library('form_validation');
$this->form_validation->set_rules('name','Name','trim|required|htmlspecialchars|max_length[30]|xss_clean');
$this->form_validation->set_rules('email','Email Address','trim|valid_email|required|htmlspecialchars|max_length[100]|xss_clean');
$this->form_validation->set_rules('message','Message','trim|required|htmlspecialchars|xss_clean');
$this->form_validation->set_error_delimiters('<div id="errors">• ','</div>');
if ($this->form_validation->run() == FALSE) {
$data['success'] = '';
$data['page_title'] = 'Contact';
$data['content'] = 'contact';
$this->load->view('template', $data);
}else{
$data['success'] = 'The email has successfully been sent';
$data['name'] = $this->input->post('name');
$data['email'] = $this->input->post('email');
$data['message'] = $this->input->post('message');
$html_email = $this->load->view('html_email', $data, true);
//load the email class
$this->load->library('email');
$this->email->from(set_value('email'), set_value('name'));
$this->email->to('emailaddressusuallyhere');
$this->email->subject('Message from Website');
$this->email->message($html_email);
$this->email->send();
$data['success'] = 'The email has successfully been sent';
$data['page_title'] = 'Contact';
$data['content'] = 'contact';
$this->load->view('template', $data);
}
}