Javascript 如何使文本字段值唯一?

Javascript 如何使文本字段值唯一?,javascript,html,database,Javascript,Html,Database,我有一个带有文本字段的表单。我想使文本字段条目唯一,这样人们就不能再次保存相同的名称 我们可以使该字段在表列中唯一吗 或 我们如何编写JS代码使该字段唯一 这就是我在后端所做的 public static boolean isUniqueShortName(String sname) throws DataObjectException { return isUniqueShortName(sname, null); } public static boolean isUniqueN

我有一个带有文本字段的表单。我想使文本字段条目唯一,这样人们就不能再次保存相同的名称

我们可以使该字段在表列中唯一吗

我们如何编写JS代码使该字段唯一

这就是我在后端所做的

public static boolean isUniqueShortName(String sname)
throws DataObjectException
{
    return isUniqueShortName(sname, null);
}


public static boolean isUniqueName(String sname, BigDecimal id)
throws DataObjectException
{

    final String SELECT_SQL = "SELECT COUNT(*) FROM LISTS WHERE LIST_NAME = ? AND ID <> ?";
    final String SELECT_SQL2 = "SELECT COUNT(*) FROM LISTS WHERE LIST_NAME = ?";

    boolean exists = false;
    Connection conn = DataObjectConnectionPool.getInstance().getConnection();
    PreparedStatement pstmt = null;
    ResultSet result = null;

    try
    {
        // determine SQL
        String SQL = null;
        if (list_id != null)
        {
            SQL = SELECT_SQL;
        }
        else
        {
            SQL = SELECT_SQL2;
        }

        // prepare statement
        pstmt = conn.prepareStatement(SQL);

        // set parameters
        pstmt.setString(1, sname);
        if (id != null)
        {
            pstmt.setBigDecimal(2, id);
        }

        // execute query
        result = pstmt.executeQuery();


        // fetch results
        while (result != null && result.next())
        {
            // fetch
            int count = result.getInt(1);
            exists = (count == 0);
        }

        // close results
        if (result != null)
        {
            try { result.close(); } catch (Exception e) {}
        }

        // close statement
        if (pstmt != null)
        {
            try { pstmt.close(); } catch (Exception e) {}
        }
    }
    catch (Exception ex)
{ 
// throw error
        throw new DataObjectException("Error checking for name uniqueness for " + sname);
    }
    finally
    {
        // close results
        if (result != null)
        {
            try { result.close(); } catch (Exception e) {}
        }

        // close statement
        if (pstmt != null)
        {
            try { pstmt.close(); } catch (Exception e) {}
        }


        // close connection
        if (conn != null)
        {
            try { conn.close(); } catch (Exception e) {}
        }
    }

    return exists;
}
public静态布尔值isUniqueShortName(字符串sname)
抛出DataObjectException
{
返回isUniqueShortName(sname,null);
}
公共静态布尔值isUniqueName(字符串sname,BigDecimal id)
抛出DataObjectException
{
最后一个字符串SELECT_SQL=“SELECT COUNT(*)从列表中,其中列表名称=?和ID?”;
最后一个字符串SELECT_SQL2=“SELECT COUNT(*)从列表中,其中列表_NAME=?”;
布尔存在=假;
连接连接=DataObjectConnectionPool.getInstance().getConnection();
PreparedStatement pstmt=null;
ResultSet result=null;
尝试
{
//确定SQL
字符串SQL=null;
如果(列表id!=null)
{
SQL=选择SQL;
}
其他的
{
SQL=选择_SQL2;
}
//准备报表
pstmt=conn.prepareStatement(SQL);
//设置参数
pstmt.setString(1,sname);
如果(id!=null)
{
pstmt.setBigDecimal(2,id);
}
//执行查询
结果=pstmt.executeQuery();
//获取结果
while(result!=null&&result.next())
{
//取回
int count=result.getInt(1);
存在=(计数==0);
}
//接近结果
如果(结果!=null)
{
请尝试{result.close();}捕获(异常e){}
}
//结束语
如果(pstmt!=null)
{
请尝试{pstmt.close();}捕获(异常e){}
}
}
捕获(例外情况除外)
{ 
//抛出错误
抛出新的DataObjectException(“检查“+sname”的名称唯一性时出错);
}
最后
{
//接近结果
如果(结果!=null)
{
请尝试{result.close();}捕获(异常e){}
}
//结束语
如果(pstmt!=null)
{
请尝试{pstmt.close();}捕获(异常e){}
}
//密切联系
如果(conn!=null)
{
请尝试{conn.close();}捕获(异常e){}
}
}
回报存在;
}

您无法在客户端使字段唯一。您可以在服务器上进行验证,并说该名称已存在于客户端

例如,执行Ajax请求以查看名称是否存在


拥有表列是一种方法,但您还需要查看索引的位置,如果它是一个长度较大的字符串,我建议您查找另一个索引键。

您肯定希望使该字段在数据库中唯一,然后添加javascript进行验证,但不完全依赖JS验证。在MySQL中,可以将其设为主键或为该列添加唯一索引。如果您尝试添加相同的名称,那么将抛出一个错误,因此请确保您使用后端上使用的任何技术(php或其他技术)捕获该错误,并让您的用户知道该名称已被使用。此时,您可以向服务器添加一个ajax调用来验证名称。

因为您没有提到您的技术,所以这是一个概念性的回答。我有JSP前端和Java后端。但是,如果我在Java文件(后端)中进行验证,我可以在前端向用户弹出一条消息来更正名称吗?您可以对后端进行AJAX调用,如果使用该名称,该调用将返回一个错误,然后通过自定义弹出窗口或简单的警报框显示该错误,我将在上面更新我在后端的操作。你能给我举个例子吗?