Forçar primeira letra

[code]function validarPosicao(campo)
{
var a = campo;
c1 = a.value.substring(0,1);

var caractere = c1.search("[^A-Za-z-]");
if(c1.length > 0 && caractere >= 0)
{
	
	alert('1º CARACTER DEVE SER UMA LETRA');
	campo.value="";
	campo.focus();
	return false;
}

return true;
}
[/code]

esse é (provavelmente) o problema de copiar código da internet sem estudá-lo e entendê-lo.

como você usa a função?

Porque voce quer bloquear o espaço ?

tenta assim
var caractere = c1.search("^[^A-Za-z-]");

Em que momento você esta chamando essa função? na tag input poe essa função ‘onkeyup’ e chama a sua função no javaScript. Quando o user digitar a função é chamada.

[]'s

Acho que isso ja resolve seu problema. Já que você só quer tirar o espaço na primeira letra digitada.

[code]
function validarPosicao(campo)
{
// se camop não for vazio e primeira caracter não for espaço
if(campo.length > 0 && campo.value.substring(0,1) == ’ ')
{
alert(‘1º CARACTER DEVE SER UMA LETRA’);
campo.value="";
campo.focus();
return false;
}

return true;
}[/code]

dentro da tag input

tenta ai qualquer coisa avisa.

[]'s

Cara não tinha testado o codigo que te mandei. Esse acabei de testar e rolou. Mas repare que isso document.getElementById("name") só vai funcionar se na sua tag input tiver id="name"

function validaEspaco(campo){
			alert('this.value:' + campo);
			if(campo.substring(0,1) == ' '){
				alert('primeira caracter deve ser letra');
				document.getElementById("name").value='';
			}
		}

tag input

<input id="name" onkeyup="javascript:validaEspaco(this.value);" />

[]'s

	function validaEspaco(campo){  
            alert('this.value:' + campo);  
            if(campo.substring(0,1) == ' '){  
                alert('primeira caracter deve ser letra');  
                document.getElementById("name").value='';  
            }
[b]            if(campo == ''){
            	alert('campo obrigatório');
            }
[/b]        } 

Então acrescenta esse if na função.

[]'s

ops*

	function validaEspaco(campo){  
            alert('this.value:' + campo);  
            if(campo.substring(0,1) == ' '){  
                alert('primeira caracter deve ser letra');  
                document.getElementById("name").value='';  
            }
            if(campo == ''){
            	alert('campo obrigatório');
            }
        } 

Mas como citaram mas pra cima, quando pegar algo da net tenta entender o que esta sendo feito e adaptar para o que você precisa. Senão entender o que a sintaxe faz, manda no google que você descobre ou pergunta aqui.

[]'s

[quote=bastides]Cara não tinha testado o codigo que te mandei. Esse acabei de testar e rolou. Mas repare que isso document.getElementById("name") só vai funcionar se na sua tag input tiver id="name"

function validaEspaco(campo){
			alert('this.value:' + campo);
			if(campo.substring(0,1) == ' '){
				alert('primeira caracter deve ser letra');
				document.getElementById("name").value='';
			}
		}

tag input

<input id="name" onkeyup="javascript:validaEspaco(this.value);" />

[]'s[/quote]

[quote]Obrigado a todos q me ajudaram… Deu certo o código para a primeira letra ser um caractere, ao invez de espaço. \o/\o/

segue o código
[/quote]

[code]function validacaractere(campo)
{
//alert(‘this.value:’ + campo);
if(campo.substring(0,1) == ’ ‘)
{
alert(‘primeira caractere deve ser letra’);
document.getElementById(“ipt_nome”).value=’’;
}

}[/code]

DEmorou qualquer coisa estamos ai…

Esse alert era só pra testar se estava pegando o valor mesmo…hehehe…esqueci de tirar

[]'s

[quote=wbdsjunior]esse é (provavelmente) o problema de copiar código da internet sem estudá-lo e entendê-lo.

como você usa a função?[/quote]

Procure pelo método trim() presente em várias linguagens de programação. Ele pega uma String e retira os espaços no início e no fim de uma cadeia de caracteres.

Algo parecido com “string.trim().length > 0” resolve o problema

Eu perguntei pra que voce quer retirar o espaco em branco, pois, da pra fazer um trim na string, quando ela for submetida, dai voce pode fazer a validacao no proprio java mano. Eu trabalho com Struts 1, e nas minhas actions eu faco validacao de espaco, isso e costume meu, pois prefiro validar isso em Java do que encher minha pagina de javascript. Bom, fica a sugestao ou ideia.

Não sou especialista no assunto, mas vou dar algumas sugestões de usabilidade, pra evitar que os usuários achem seu sistema chato:

  • Não use alerts para avisar de campos preenchidos incorretamente.
    Destaque o campo com borda colorida, coloque uma mensagem do lado do campo, coisas assim.
    Alert é uma das formas de aviso mais chatas que existem. E a maioria dos usuários clicam ok sem ler a mensagem.

  • Valide o formulário apenas na hora que ele confirmar a ação.
    Geralmente no evento onsubmit do form ou no onclick do botão (se estiver utilizando ajax)

  • Procure “higienizar” o valor dos campos de forma transparente automaticamente antes de validar.
    Por exemplo, se for um campo CPF, ao invés de bloquear ponto final e traço, deixe o usuário digitar como quiser.
    Quando o campo perder o foco (ou no submit), você limpa todos caracteres que não são numéricos. Se o usuário copiou o campo de algum lugar fica mais simples pra ele.

Se o seu sistema roda em intranet, ele só fica parcialmente chato . Mas fazer validação apenas no servidor quando acessa pela internet é tortura.
(Se bem que usando struts 1 imagino que você queira descontar a dor que passa em alguém…rs)

A verdade é que você não precisa de tantos javascripts para validação.
Existem libs javascript por aí para validação de formulários de forma declarativa.

Você pode escrever em suas tags html algo como:

  &lt;input name="nome" required="true" min_length="20"&gt;

E disparar uma função única de validação para todo form.

Na verdade sao sistemas legados, nao posso alterar muita coisa, visto que N pessoas fazem manutencao nos mesmos.

Sobre a tortura no servidor isso praticamente nao existe, pois esta num super servidor, com 65 GB ram e muitas outras caracteristicas de ponta =D, isso e informacao muito tecnica que nao sei lhe informar por completo.