使input文本框不可编辑的3种方法(有disabled属性的input框,后台获取不到值)

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使input文本框不可编辑的3种方法(有disabled属性的input框,后台获取不到值)相关的知识,希望对你有一定的参考价值。

1. 使input文本框不可编辑的3种方法

今天在写JSP的时候我写了这样的代码

在这里插入图片描述

updateBook.jsp

    <form action="${pageContext.request.contextPath}/updateBook" method="post">
        <% Book book = (Book) request.getAttribute("book");%>

        <span style="margin-left: 20px;"> 图书编号:</span><input type="text" name="bookId" disabled="disabled"
                                                             value="<%= book.getBookId()%>"
    ><br><br><br>
        <span style="margin-left: 20px;"> 图书名:</span><input type="text" name="bookName" required
                                                            value="<%= book.getBookName()%>"
    ><br><br><br>
        <span style="margin-left: 42px;"> 作者:</span><input type="text" name="author" required
                                                           value="<%= book.getAuthor()%>"
    ><br><br><br>
        <span style="margin-left: 42px;"> 库存:</span><input type="text" name="inventory" required
                                                           value="<%= book.getInventory()%>"
    ><br><br><br>
        <input type="submit" value="提交"/>
    </form>

我的想法是后台的Servlet通过这样的方式去获得前端传递过来的参数,但当我运行程序的时候,我发现
在这里插入图片描述
有disabled属性的input框,后台获取不到值!!!

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取前端传递过来的书籍的信息
        String bookId = req.getParameter("bookId");
        String bookName = req.getParameter("bookName");
        String author = req.getParameter("author");
        String inventory = req.getParameter("inventory");
        System.out.println("bookId" + bookId);
        System.out.println("author" + author);
        System.out.println("bookName" + bookName);
        System.out.println("inventory" + inventory);
        BookServiceImpl bookService = new BookServiceImpl();
        try {
            bookService.updateBook(bookId, bookName, author, Integer.parseInt(inventory));
            //页面跳转,跳到图书管理页面(index.jsp)
            resp.sendRedirect("/books");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

1.1 第一种办法:disabled

disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值设置后文字的颜色会变成灰色。disabled 属性无法与 <input type="hidden"> 一起使用。

示例:<input type="text" disabled="disabled" />


1.2 第二种办法:readonly

readonly 属性规定输入字段为只读可复制,但是,用户可以使用Tab键切换到该字段,可选择,可以接收焦点,还可以选中或拷贝其文本。后台会接收到传值readonly 属性可以防止用户对值进行修改。

readonly 属性可与 <input type="text"> 或 <input type="password"> 配合使用。

示例:<input type="text" readonly="readonly">

1.3 第三种办法: readonly + unselectable=“on”

readonly unselectable="on" 该属性跟disable类似,input 元素,不可编辑,不可复制,不可选择,不能接收焦点,设置后文字的颜色也会变成灰色,但是后台可以接收到传值。

示例:<input type="text" readonly unselectable="on" >



以上是关于使input文本框不可编辑的3种方法(有disabled属性的input框,后台获取不到值)的主要内容,如果未能解决你的问题,请参考以下文章

使input文本框不可编辑的3种方法

使input文本框不可编辑的3种方法

几种设置表单元素中文本输入框不可编辑的方法

input文本框不可编辑的方法

HTML中让表单input等文本框为只读不可编辑的方法

AngularJS进阶 三 HTML 让表单 文本框只读,不可编辑的方法